![]() |
MOD und EXTENDED arbeiten nicht zusammen, alternative?
Hallo, in einem html/java habe ich folgendes gefunden:
Delphi-Quellcode:
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:
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 !") } }
Delphi-Quellcode:
Gibt es ein Mathe-Genie hier im Forum, der eine Lösung für D7 aus der Tasche zaubern kann? :?
ERGEBNISS := Power(Zahl, E) mod N; {ergibt Operanden-Fehler}
|
Re: MOD und EXTENDED arbeiten nicht zusammen, alternative?
Probiers doch mal mit Runden (:
|
Re: MOD und EXTENDED arbeiten nicht zusammen, alternative?
Versuch es doch so
Delphi-Quellcode:
Gibt es ein Mathe-Genie hier im Forum, der eine Lösung für D7 aus der Tasche zaubern kann? :?[/quote]
ERGEBNISS := Trunc(Power(Zahl, E)) mod N; {ergibt Operanden-Fehler}
|
Re: MOD und EXTENDED arbeiten nicht zusammen, alternative?
Delphi-Quellcode:
Sollte so eigentlich stimmen.
function ExtendedMod(Value: Extended; Divisor: Integer):Extended;
begin Result := Value; while Result >= Divisor do Result := Result - Divisor; end; [Edit]Waaah Nein.... :wall: 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; |
Re: MOD und EXTENDED arbeiten nicht zusammen, alternative?
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; |
Re: MOD und EXTENDED arbeiten nicht zusammen, alternative?
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 |
Re: MOD und EXTENDED arbeiten nicht zusammen, alternative?
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 ![]() MfG Binärbaum |
Re: MOD und EXTENDED arbeiten nicht zusammen, alternative?
Hi Binärbaum and all, thanks so far...
Zitat:
Beispiel:
Delphi-Quellcode:
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:
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; ![]() 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... |
Re: MOD und EXTENDED arbeiten nicht zusammen, alternative?
Zitat:
Delphi-Quellcode:
MfG
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; 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] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz