AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi MOD und EXTENDED arbeiten nicht zusammen, alternative?
Thema durchsuchen
Ansicht
Themen-Optionen

MOD und EXTENDED arbeiten nicht zusammen, alternative?

Ein Thema von trockentaucher · begonnen am 15. Mär 2005 · letzter Beitrag vom 16. Mär 2005
Antwort Antwort
Benutzerbild von trockentaucher
trockentaucher

Registriert seit: 25. Nov 2003
Ort: Dortmund
41 Beiträge
 
Delphi 7 Professional
 
#1

MOD und EXTENDED arbeiten nicht zusammen, alternative?

  Alt 15. Mär 2005, 20:55
Hallo, in einem html/java habe ich folgendes gefunden:

Delphi-Quellcode:
function crypt(f) {
  var e = f.T5.value
  var klartext = f.T9.value
  var n = f.T3.value
  var ergebnis = 1
  if (klartext < n*1) {
    for (i=1;i<=e;i++) {
      ergebnis *= klartext
      ergebnis %= n
    }

    f.T10.value = klartext+" hoch "+e+" (mod "+n+") = "+ergebnis
    f.T17.value = n
  }
  else {
    hilf = n-1
    alert("Nur Zahlen von 0 bis "+hilf+" können verschlüsselt werden !")
  }

}
Diese Funktion macht nicht anderes als (ERGEBNISS = Zahl^E mod N); gehört zu einer simplen Verschlüsselung von Zahlen durch die Anwendung von Primzahlen. Dieses wollte ich eigentlich unter Delphi einsetzen (D7 prof.), was aber nicht funzt, weil ZAHL^E als Ergebniss einen EXTENDED-Wert liefert: ERGEBNISS := Power(Zahl, E) mod N; {ergibt Operanden-Fehler} Gibt es ein Mathe-Genie hier im Forum, der eine Lösung für D7 aus der Tasche zaubern kann?
  Mit Zitat antworten Zitat
bigg
(Gast)

n/a Beiträge
 
#2

Re: MOD und EXTENDED arbeiten nicht zusammen, alternative?

  Alt 15. Mär 2005, 20:59
Probiers doch mal mit Runden (:
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: MOD und EXTENDED arbeiten nicht zusammen, alternative?

  Alt 15. Mär 2005, 21:01
Versuch es doch so
ERGEBNISS := Trunc(Power(Zahl, E)) mod N; {ergibt Operanden-Fehler} Gibt es ein Mathe-Genie hier im Forum, der eine Lösung für D7 aus der Tasche zaubern kann? [/quote]
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
moritz

Registriert seit: 18. Apr 2003
1.037 Beiträge
 
#4

Re: MOD und EXTENDED arbeiten nicht zusammen, alternative?

  Alt 15. Mär 2005, 21:05
Delphi-Quellcode:
function ExtendedMod(Value: Extended; Divisor: Integer):Extended;
begin
  Result := Value;
  while Result >= Divisor do
    Result := Result - Divisor;
end;
Sollte so eigentlich stimmen.
[Edit]Waaah Nein.... Okay, das war's ned![Edit]

Edit 2:
Vielleicht so....
Delphi-Quellcode:
function ExtendedMod(Value: Extended; Divisor: Integer):Extended;
begin
  Result := (Value / Divisor) - Floor(Value / Divisor);
end;
"Optimistisch ist diejenige Weltanschauung, die das Sein höher als das Nichts stellt und so die Welt und das Leben als etwas an sich Wertvolles bejaht."
Albert Schweitzer
  Mit Zitat antworten Zitat
bigg
(Gast)

n/a Beiträge
 
#5

Re: MOD und EXTENDED arbeiten nicht zusammen, alternative?

  Alt 15. Mär 2005, 21:29
na wenn dann so:

Delphi-Quellcode:
function ExtendedMod(Value: Extended; Divisor: Integer):Extended;
var x: Extended;
begin
x := (Value / Divisor);
Result := x - Floor(x);
end;
  Mit Zitat antworten Zitat
schöni

Registriert seit: 23. Jan 2005
Ort: Dresden
445 Beiträge
 
Delphi 7 Personal
 
#6

Re: MOD und EXTENDED arbeiten nicht zusammen, alternative?

  Alt 15. Mär 2005, 22:15
Hallo trockentaucher!

Also mit mod kannst Du nur ganze Zahlen dividieren. Entweder Du rundest mit Trunc oder Round und rechnest mit dem Int64 Wert weiter, oder Du musst ne eigene Routine für Power schreiben, die ein ganzzahliges Ergebnis liefert, fall Du den Verschlüsselungsalgotithmus beibehalten willst. Wahrscheinlich eher letzteres, da ich aus dem Thread entnehme, das es mit Int64 auch nicht geht. Aber mit der Zahl e als Basis oder Exponent kannst Du nur mit Round oder Trunc runden.

Viel Erfolg

schöni
Damit der Topf nicht explodiert, lässt man es ab und zu mal zischen.
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: MOD und EXTENDED arbeiten nicht zusammen, alternative?

  Alt 16. Mär 2005, 00:30
Also ich gehe mal davon aus, dass das "E" nur für den allgemeinen Exponenten steht und nicht für e (eulersche Zahl), da man sonst kein ganzzahliges Ergebnis erhalten kann.
Statt Power könnte man auch Delphi-Referenz durchsuchenIntPower verwenden, dort werden nur ganzzahlige Exponenten zugelassen (und müsste somit auch schneller sein als Power). Ich bin mir jetzt nicht ganz sicher, welchen Rückgabetyp die Funktion hat, aber wahrscheinlich auch Extended. Deshalb muss man mit Round oder Trunc das Ergebnis in einen Int64 umwandeln (Das geht aber nur, wenn das Ergebnis noch im Bereich von Int64 liegt also < 2^63 -1 ). Dann sollte auch der mod-Operator wieder funktionieren.

MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Benutzerbild von trockentaucher
trockentaucher

Registriert seit: 25. Nov 2003
Ort: Dortmund
41 Beiträge
 
Delphi 7 Professional
 
#8

Re: MOD und EXTENDED arbeiten nicht zusammen, alternative?

  Alt 16. Mär 2005, 09:05
Hi Binärbaum and all, thanks so far...

Zitat von Binärbaum:
Also ich gehe mal davon aus, dass das "E" nur für den allgemeinen Exponenten steht und nicht für e (eulersche Zahl)
Yepp, soweit richtig.

Beispiel:
Delphi-Quellcode:
Function gfGetKey(intNr:Extended) :Extended; {intNr ist ein 4-stelliger Integer, der verschlüsselt werden soll}

Var Zahl : Extended;

begin
  Zahl := Power(intNr, 7); {Result: 3,3541434664347E24}
  gfGetKey := Zahl mod 119; {hier rumst es weil Zahl:Extended}
end;
Im Prinzip soll gfGetKey einen Integer liefern, der aus dem Rest (mod) von "Zahl div 119" enthält. Dieser Wert wäre die Verschlüsselung. Die Idee habe ich hier gefunden: Verschlüsselung von Zahlen
Als Primzahlen können zum testen die 7 und die 17 verwendet werden, Zahl E wäre 7. Daraus ergibt sich 119 für Zahl N...
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: MOD und EXTENDED arbeiten nicht zusammen, alternative?

  Alt 16. Mär 2005, 12:07
Zitat von trockentaucher:
Beispiel:
Delphi-Quellcode:
Function gfGetKey(intNr:Extended) :Extended; {intNr ist ein 4-stelliger Integer, der verschlüsselt werden soll}

Var Zahl : Extended;

begin
  Zahl := Power(intNr, 7); {Result: 3,3541434664347E24}
  gfGetKey := Zahl mod 119; {hier rumst es weil Zahl:Extended}
end;
Im Prinzip soll gfGetKey einen Integer liefern, der aus dem Rest (mod) von "Zahl div 119" enthält. Dieser Wert wäre die Verschlüsselung. Die Idee habe ich hier gefunden: Verschlüsselung von Zahlen
Als Primzahlen können zum testen die 7 und die 17 verwendet werden, Zahl E wäre 7. Daraus ergibt sich 119 für Zahl N...
Warum deklarierst du intNr als Extended, wenn dort nur 4-Stellige Integer vorkommen?
Delphi-Quellcode:
Function gfGetKey(intNr: Integer) :Cardinal; {intNr ist ein 4-stelliger Integer, der verschlüsselt werden soll}
var Zahl : Int64;
begin
  Zahl := Round(IntPower(intNr, 7));
  gfGetKey := Zahl mod 119;
end;
MfG
Binärbaum

[Edit]
Als Rückgabewert würde in diesem Falle sogar der Typ Byte ausreichen, da Zahl mod 119 stets im Bereich 0..118 liegt.
[/Edit]
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz