![]() |
RSA - Schlüsselerzeugung Problem
So mein erster post hier im Forum. Hoffe er passt hier einiegermaßen rein. :wink:
Ich schreibe jetzt seit einieger Zeit an einem einfachen Programm zur RSA-Verschlüsselung inklusive Key-Erzeugung. Letzteres bereitet mir allerdings Probleme. Der Public Key ist ja noch schnell gefunden, für den Private Key brauch ich aber den erw. Euklidischen Algorithmus. Also kurz gesucht und gefunden, danach dann noch auf BigNumber2 ( ![]() Das ganze funktioniert auch soweit, nur ist der Zahlenraum in dem ich Berechnungen durchfüren kann sehr klein. Ein kleines Beispiel: Public Key= 160 e= 7 Privatekey= 23 korrekter Privatekey= 23 ->ok --- Public Key= 1409*1447= 2038823 e= 7 Privatekey= 148334775 korrekter Privatekey= 1454263 -> ???? mehrere dezimalstellen zuviel + andere zahlen Nun stellt sich die Frage, wie kann ich die Leistungsfähigkeit meines Keygenerators noch steigern, damit ich auch solche Berechnungen ausführen kann? Habe noch ne Funktion zur binären Modulo-Exponentation, die ich auch bei der Verschlüsselung nutze, aber die kann ich ja wohl kaum überall hier einbauen. Hier jedenfalls erstmal der Quelltest zum erw. Euklid. Algo.:
Delphi-Quellcode:
Vorschläge?
function invers_mod2(e,m:TBigNumber):TBigNumber;
var m0,x0,x1,y0,y1,xx,yy,q,r:TBigNumber; bpos:Boolean; begin m0:=m; x0:=BMD_StrToBigNum('1',false); x1:=BMD_StrToBigNum('0',false); y0:=BMD_StrToBigNum('0',false); y1:=BMD_StrToBigNum('1',false); bPos:=true; while BM_CompareNE(e,BMD_StrToBigNum('0',false)) do Begin q:= BM_Divide(m,e) ; r:= BM_Modulo(m,e); m:=e; e:=r; xx:=x1; yy:=y1; x1:=BM_Add(BM_Multiply(q,x1),x0); y1:=BM_Add(BM_Multiply(q,y1),y0); x0:=xx; y0:=yy; bPos:=not bPos; End; if(bPos) then y0:=BM_Sub(BMD_StrToBigNum('0',false),y0); if BM_CompareL(y0,m) then y0:=BM_ADD(m0,y0); result:=y0; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:31 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