![]() |
Re: Unbegrenzt viele Nachkommastellen
Zitat:
Es ist wichtig das du hier im Thread exakt die DECmath Version download'st die auch zur Delphi Version passt. Also DECMathD5.zip für Delphi 5, DECMathD6.zip für Delphi 6 und DECMathD7.zip für Delphi 7. ConsoleForm.dfm und ConsoleForm.dcu liegen dann im DCU Ordner parat -> \DEC_Dx\* Ich habe es nun nochmal selber ausgetestet. Rechner nackig gemacht, sprich alle meine Entwicklungspfade die DEC enthalten umbenannt, so das garantiert keine Suchpfade darauf verweisen. Danach DECMathD7.zip in einen Ordner d:\DEC_D7\ entpackt, MIT ORDNERN entpacken. Danach Delphi 7 gestartet, in d:\DEC_D7\Demo\Test.pbg geöffnet, alles compiliert und die Test.exe gestartet. Danach Delphi 7 geschlossen, den Ordner d:\DEC_D7\ komplett gelöscht. Danach auf Lafwerk C:\ einen Ornder DEC_D7 anglegt und erneut dahinein die ZIP entpackt. Delphi 7 wieder gestartet, Test.pbg geöffent und neu compiliert, danach gestartet. Ging alles absolut problemlos. Ich verstehe also nicht was bei dir das Problem sein soll. Ich arbeite nun schon seit 15 Jahren mit Delphi/Borland Pascal, benutze auch schon fast so lange exakt diese Form der Installationen meiner Projekte, und habe bisher noch nie irgendwelche Probleme damit gehabt. Es MUSS also funktionieren! Falls es dann immer noch nicht bei dir funktioniert, tja dann weis ich auch nicht weiter :( Gruß Hagen |
Re: Unbegrenzt viele Nachkommastellen
Hallo Hagen,
deine 'Große Zahlen Bibliothek' ist echt super. Ich hab gestern die IsProbablyPrim Funktion gut gebrauchen können. Kommst du eigentlich aus Bonn ???? |
Re: Unbegrenzt viele Nachkommastellen
Zitat:
Zitat:
Gruß Hagen |
Re: Unbegrenzt viele Nachkommastellen
Hab alle DCUs in meinen Ordner kopiert und das wars.
Hat bestens geklappt. |
Re: Unbegrenzt viele Nachkommastellen
Wow, ist ja schon einige Zeit (mehr als ein Jahr) her, daß ich in diesen Thread geschrieben hab und danach war noch keiner nach mir hier. :stupid:
Ich hab die tollen langen Integers schon einige Male gut gebrauchen können und bin immer wieder begeistert. (bisher in D7) Jetzt hab ich die Turbo-Delphi für win32. Meine Frage an Hagen: Kann man auch für Turbo-Delphi die passenden Bibliotheken bekommen? :?: |
Re: Unbegrenzt viele Nachkommastellen
Versuchs mal mit der D7-Version. Aber bitte hier keine Fragen dazu stellen, wie man die zum Laufen kriegt, Hagen reagiert manchmal sehr empfindlich, wenn man bei der Installation außerhalb seiner Spezifikationen rumfrickelt und es nicht hinkriegt ;-)
(Wenn da nur DCUs sind, is der Ofen natürlich aus, soweit überblick ich das ganze jetzt nicht) |
Attacken auf RSA
hallo
mein problem ist "Common Modulus Attack" "Bei diesem Angriff geht man davon aus, dass Bob (der Sender) an Alice und an Ali eine Nachricht übermittelt, die den gleichen Modulus aufweisen (N)" also N, E1, E2, C1 und C2 ist bekannt Inzwischen kann ich auch einige übungsaufgaben auch lösen, doch bei einer stimmt die prüfung von C1 nicht :(
Code:
dabei gild:
unit Unit2;
interface uses Unit1, Nints; Procedure ComModAtt2(N,E1,E2,C1,C2: IInteger); implementation Procedure ComModAtt2(N,E1,E2,C1,C2: IInteger); var M,D,U,V,A,B,C: IInteger; Sgn: Integer; begin Form1.Memo5.Clear; Form1.Memo5.Lines.Add('N= '+NStr(N,NStrFormatDez)); Form1.Memo5.Lines.Add('E1= '+NStr(E1,NStrFormatDez)); Form1.Memo5.Lines.Add('E2= '+NStr(E2,NStrFormatDez)); Form1.Memo5.Lines.Add('C1= '+NStr(C1,NStrFormatDez)); Form1.Memo5.Lines.Add('C2= '+NStr(C2,NStrFormatDez)); // ggT(E1,E2), E1*U+E2*V=1 NGCD(D,U,V,E1,E2); Form1.Memo5.Lines.Add(''); Form1.Memo5.Lines.Add('NGCD(D,U,V,E1,E2);'); Form1.Memo5.Lines.Add('D= '+NStr(D,NStrFormatDez)); Form1.Memo5.Lines.Add('U= '+NStr(U,NStrFormatDez)); Form1.Memo5.Lines.Add('V= '+NStr(V,NStrFormatDez)); NMul(A,E1,U); NMul(B,E2,V); NAdd(C,A,B); Form1.Memo5.Lines.Add('E1*U= '+NStr(A,NStrFormatDez)); Form1.Memo5.Lines.Add('E2*V= '+NStr(B,NStrFormatDez)); Form1.Memo5.Lines.Add('Sum= '+NStr(C,NStrFormatDez)); //muß 1 sein Sgn:=NSgn(U); if Sgn=-1 then NInvMod(C1,N) else NInvMod(C2,N); Form1.Memo5.Lines.Add(''); Form1.Memo5.Lines.Add('NInvMod'); Form1.Memo5.Lines.Add('C1= '+NStr(C1,NStrFormatDez)); Form1.Memo5.Lines.Add('C2= '+NStr(C2,NStrFormatDez)); NAbs(U); NAbs(V); //NPow(A,C1,NInt32(U)); //NPow(B,C2,NInt32(V)); NPowMod(A,C1,U,N); NPowMod(B,C2,V,N); NMul(M,A,B); NMod(M,N); Form1.Memo5.Lines.Add(''); Form1.Memo5.Lines.Add('M(Dez)= '+NStr(M,NStrFormatDez)); Form1.Memo5.Lines.Add('M(Hex)= '+NStr(M,NStrFormatHex)); //Form1.Memo5.Lines.Add('M(Str)= '+NStr(M,256)); // Gegenprobe //NMod(M, N); NPowMod(C1, M, E1, N); Form1.Memo5.Lines.Add('C1-Prüfung(Dez)= '+NStr(C1,NStrFormatDez)); end; end.
Code:
doch die prüfung von C1 stimmt nicht
N:=402394248802762560784459411647796431108620322919897426002417858465984510150839043
30871212331051092261069037808551940774250258597856343810132119101903400539 27719366298693602053832477210261514496605439665282540146366485326403978575807916485639542483427 00568953634713286153354659774351731627683020456167612375777 E1:=3 E2:=17 C1:=2394500555365791264104330571199555682432088780374415580523455380604299102278641969063454277 5400049964152157551294447338004786562367966440122936534520806805 09956002487963581299506769508427247587430445433434269388456788927763963152408982656489198933847 23100132425351735921836372375270138768751862889295179915967 C2:=1383726409187124416350484327961837451631640337599336920157386880435148768080304194088666589 2614957261904997547953351803854312378143963536798820459974041130 44647105382346754095529545434399805222434169327598340069737179640327120984737524964711822752164 38174279723470286674311474283278293265668947915374771552561
Code:
bei anderen vorgaben funktionierte es...
C1-Prüfung(Dez)= 229 748 883 401 527 166 400 260 684 242 392 683 037 469 523 041 872 042
980 844 846 342 550 340 518 503 592 032 573 441 380 746 571 208 620 262 300 506 317 236 122 652 396 681 944 603 811 686 899 149 909 108 149 973 290 629 735 474 070 166 041 694 507 597 661 203 560 787 563 388 577 200 545 258 718 291 160 899 361 354 003 355 196 008 305 806 812 154 227 397 942 403 831 325 878 222 902 530 245 122 071 910 219 habe auch extra eigene RSA packete erstellt und mit dieser funktion getestet habe ich irgendwo ein fehler im code? wäre über hilfe dankbar, mfg Dano |
AW: Unbegrenzt viele Nachkommastellen
Das ist aber eine eigenwillige Interpretation von "Common Modulus Attacke"! Normalerweise ist dies Situation:
Bob: N, e1, d1 alle bekannt Alice: N, e2 bekannt, von Bob gesucht d2=? Mit seinen Angaben kann Bob N=p*q faktorisieren und d2 berechnen (bzw einen äquivalenten Geheimschlüssel). |
AW: Unbegrenzt viele Nachkommastellen
Hallo, ich habe gerade mal ein wenig Literatur angeschaut, und bemerkt daß Deine Attacke wirklich auch unter "Common Modulus" läuft (und ich habe selbst vor über einen Jahr ein solches Demoprogramm für meine MPArith-RSA-Unit geschrieben).
Ich kann Deine Rechnung mit meinen Routinen nachvollziehen, bei mir ist übrigens auch m^e2 ungleich c2. Da die ganze Rechnung eigentlich trivial ist: Voraussetzung: c1 = m^e1 mod n, c2 = m^e2 mod n. Berechne mit erweitertem GCD: u*e1 + v*e2 = 1 Dann gilt: c1^u*c2^v = m^(e1*u)*m^(e2*v) = m^(u*e1 + v*e2) = m^1 = m Da e1,e2 teilerfremd sind, mit u=6, v=-1 sollte m eigentlich berechnet werden können, WENN die Voraussetzungen stimmen. Das scheint mir der einzige Anhaltspunkt für einen Fehler zu sein! Hast Du c1 und c2 selbst aus m berechnet? Wenn ja, poste es doch mal. Mein berechnetes m ist m = 26002876987877775190361557548489331852259354915301 9384765768600715250637538 24282061019671425762467214234562338819547212408526 652061848635849964322015502199 81557879879742320530299944627310252826350236091418 607481941348004944530848076278 28351442483638107586760292651456892855464402992980 040644004040959655693485 Aber wie gesagt, m^e1 <> c1 und m^e2 <> c2. Gruß Gammatester |
AW: Unbegrenzt viele Nachkommastellen
hi
mein M ist auch
Code:
hm, also muß ich vlt noch irgendwo einen fehler haben oder die aufgabe ist damit nicht lösbar:(
260 028 769 878 777 751 903 615 575 484 893 318 522 593 549 153
019 384 765 768 600 715 250 637 538 242 820 610 196 714 257 624 672 142 345 623 388 195 472 124 085 266 520 618 486 358 499 643 220 155 021 998 155 787 987 974 232 053 029 994 462 731 025 282 635 023 609 141 860 748 194 134 800 494 453 084 807 627 828 351 442 483 638 107 586 760 292 651 456 892 855 464 402 992 980 040 644 004 040 959 655 693 485 c1 und c2 waren vorgaben gewesen... ich check das noch mal danke für die gegenrechnung, zeigt mir erstmal das ich richtig gerechnet habe^^ aber wenn alles stimmt muß ja nach M^E1 mod N wieder das c1 rauskommen *grübel*
Code:
mfg Dano
NGCD(D,U,V,E1,E2);
Divisor= 1 U= 6 V= - 1 E1*U= 18 E2*V= - 17 Sum= 1 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:50 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