Delphi-PRAXiS
Seite 11 von 12   « Erste     91011 12      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Unbegrenzt viele Nachkommastellen (https://www.delphipraxis.net/12974-unbegrenzt-viele-nachkommastellen.html)

negaH 19. Mai 2005 14:09

Re: Unbegrenzt viele Nachkommastellen
 
Zitat:

"c:\dec_d5\" die einzigen...
Auch mit Delphi 3 hatte ich nicht mehr erfolg als mit D7
???? Was nun :) willst du Delphi 5, 6 oder 7 benutzen ? für Delphi 3 gibts DECMath nicht.

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

Rain 27. Aug 2005 01:37

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 ????

negaH 27. Aug 2005 12:11

Re: Unbegrenzt viele Nachkommastellen
 
Zitat:

Kommst du eigentlich aus Bonn ????
Nein.

Zitat:

deine 'Große Zahlen Bibliothek' ist echt super. Ich hab gestern die IsProbablyPrim Funktion gut gebrauchen können.
Und, wie war die Installation ? Hat die reibungslos funktioniert ?

Gruß Hagen

Rain 27. Aug 2005 13:30

Re: Unbegrenzt viele Nachkommastellen
 
Hab alle DCUs in meinen Ordner kopiert und das wars.
Hat bestens geklappt.

Rain 24. Feb 2007 17:20

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? :?:

DGL-luke 24. Feb 2007 17:45

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)

Dano 5. Aug 2011 21:13

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:
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.
dabei gild:
Code:
N:=402394248802762560784459411647796431108620322919897426002417858465984510150839043
30871212331051092261069037808551940774250258597856343810132119101903400539
27719366298693602053832477210261514496605439665282540146366485326403978575807916485639542483427
00568953634713286153354659774351731627683020456167612375777


E1:=3
E2:=17

C1:=2394500555365791264104330571199555682432088780374415580523455380604299102278641969063454277
5400049964152157551294447338004786562367966440122936534520806805
09956002487963581299506769508427247587430445433434269388456788927763963152408982656489198933847
23100132425351735921836372375270138768751862889295179915967

C2:=1383726409187124416350484327961837451631640337599336920157386880435148768080304194088666589
2614957261904997547953351803854312378143963536798820459974041130
44647105382346754095529545434399805222434169327598340069737179640327120984737524964711822752164
38174279723470286674311474283278293265668947915374771552561
doch die prüfung von C1 stimmt nicht
Code:
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
bei anderen vorgaben funktionierte es...
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

gammatester 5. Aug 2011 23:25

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).

gammatester 6. Aug 2011 08:56

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

Dano 7. Aug 2011 00:54

AW: Unbegrenzt viele Nachkommastellen
 
hi

mein M ist auch
Code:
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
hm, also muß ich vlt noch irgendwo einen fehler haben oder die aufgabe ist damit nicht lösbar:(
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:
NGCD(D,U,V,E1,E2);
Divisor=  1
U=  6
V= -  1

E1*U= 18
E2*V= - 17
Sum=  1
mfg Dano


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:14 Uhr.
Seite 11 von 12   « Erste     91011 12      

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