Hallo,
ich weiß ja nicht, wo b := FastExpMod(b,e2,n2); in Bignum2 vorkommt, aber es gibt wohl immer überarbeitete Funktionen.
In der Version
www.delphi-forum.de/download.php?id=1868 aus
www.delphi-forum.de/viewtopic.php?t=51429
gibt es doch:
Delphi-Quelltext
1: 2:
| Function BMD_StrToBigNum(Str: String; HexInput: Boolean): TBigNumber; Function BMD_BigNumToStr(Num: TBigNumber; HexOutput: Boolean): String; |
Ich würde also die hexadezimale Ein-Ausgabe wählen.
Die braucht zwar den doppelten Platz als String gegenüber dem Speicherabbild von TBignumber, aber läßt sich sehr schnell hin und herwandeln und einfach als String speichern.
Es muss aber etwas geändert werden, beim Einlesen entsprechend.
Das heißt der String hat immer eine gerade Zahl an Hexadezimalstellen (2 Hexadezimalziffern entsprechen einem Byte) und kann beim Einlesen ohne Fallunterscheidung arbeiten.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| Function BMD_BigNumToStr(Num: TBigNumber; HexOutput: Boolean): String; Var B, R: TBigNumber; X: Integer; Begin Result := ''; If HexOutput Then Begin BM_Optimize(Num); For X := 0 To High(Num) Do Result := IntToHex(Num[X], 2) + Result; End Else |
Vielleicht wäre es sinnvoll ein'0x' der Ausgabestring voranzustellen, damit man das im Editor auch sofort erkennt, was gemeint ist.
Gruß Horst