AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi RSA: Privaten Schlüssel schneller berechnen

RSA: Privaten Schlüssel schneller berechnen

Ein Thema von WIN-MANww · begonnen am 1. Jun 2006 · letzter Beitrag vom 17. Sep 2012
Antwort Antwort
Seite 1 von 5  1 23     Letzte » 
WIN-MANww

Registriert seit: 23. Mai 2004
Ort: Schweiz
55 Beiträge
 
Turbo Delphi für Win32
 
#1

RSA: Privaten Schlüssel schneller berechnen

  Alt 1. Jun 2006, 09:20
Hi zusammen

Ich bin seit letzter Zeit daran, eine RSA Verschlüsselung zu schreiben, nur habe ich Probleme mit der Berechnung des privaten Schlüssels, d.h. es funktioniert zwar, ist aber ziemlich langsam. Mein Code sieht bis jetzt so aus:

Delphi-Quellcode:
function PrivateKeyCalc(e, phi : String) : String;
var
 i, j: String;
begin
 i := '0';
 repeat
  i := GiantAddition(i, '1');
  result := i;
  j := GiantMod(GiantMultiplication(e, i), phi);
  Showmessage(j);
 until
  (GiantSizeTest(j, '1') = 0) and (GiantSizeTest(e, result) <> 0);
end;
Stört euch nicht an den Giant Dingern, das ist eine eigene Unit von mir um grosse Zahlen zu berechnen, nur ist die eben langsam, darum will ich bei der Berechnung des Schlüssels selber nicht so viele Operationen durchführen müssen. Ich versuche hier ja mit i den Schlüssel zu finden, jedoch ist das ziemlich langsam, weil es ja alle Werte von 1 bis zum gefundenen Schlüssel durchprobieren muss. Ich würde also gerne von euch wissen, ob man nicht einen genäueren Startwert für i berechnen könnte, damit man nur noch so 5 Durchläufe braucht. Danke schon im vorraus für die Antworten
Fg:
WIN-MAN

"Never underestimate Radical Vision" - Startup
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: RSA: Privaten Schlüssel schneller berechnen

  Alt 1. Jun 2006, 09:40
Ich an deiner Stelle würde mal schauen, ob du nicht noch was bei den GiantXXX-Funktionen rausholen kannst
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#3

Re: RSA: Privaten Schlüssel schneller berechnen

  Alt 1. Jun 2006, 14:00
Sorry aber deine Frage ist sehr unklar.

Du möchtest den Privaten RSA Schlüssel aus dem öffentlichen Exponenten E und Phi == (P-1) * (Q-1) berechnen. Das geht nur über die Faktorization des öffentlichen Modulus N = P * Q. Dh. das was du machen möchtest ist es einen öffentlichen RSA Schlüssel zu knacken, richtig ?

Falls die beiden Primzahlen P,Q entsprechend groß und sauber gewählt wurden, wirst du selbst mit der besten mathm. Library und den besten mathematischen Verfahren nicht in der Lage sein mit vertretbaren zeitlichem/technischen Aufwand ein solches public Modul N in P,Q zu faktorisieren. Logisch, da ja exakt dieses Verhalten die Sicherheit ausmacht.


Solltest du aber mit deiner Frage auf die korrekte Erzeugung eines RSA Schlüsselpaares abzielen, dann gibt es tatsächlich weit bessere Verfahren.

Du hast

1.) die beiden Primzahlen P und Q erzeugt.
2.) den öffentlichen Esxponenten E berechnet oder dich für einen festen Exponenten E entschieden (z.b 3, 17, $10001)
3.) Phi = (P -1) * (Q -1) berechnet
4.) public Modul N = P * Q berechnet

und suchst nun den privaten Entschlüsselungs-Exponenten D.

Du rechnest jetzt

Delphi-Quellcode:
  U := LCM(P -1, Q -1);
// LCM = Leat Common Multiple == letztes gemeinsames Vielfaches == Phi(N) falls N=P*Q Primzahlen sind.

  repeat
    repeat
      E := Random() mod (2^(Log2(Log2(N)) * 4));
      E := E or 1;
// erzeuge Zufälligen öffentlichen Exponenten E. Sollte 4*Ln2(Ln2(N)) Bits groß sein und ungerade.
// E sollte auch Teilerfremd zu P,Q sein. Wir überprüfen dies mit dem GCD = greatest common divisor == ggT() ==
// größter gemeinsammer Teiler. Da P,Q Primzahlen sind muß der GCD mit E immer 1 sein, ergo E kann und darf KEIN
// Teiler der Primzahlen P,Q sein. Sollte GCD <> 1 sein so kann P,Q keine Primzahl sein, ergo der RSA Schlüssel
// wäre absolut unsicher weil man nicht mit Primzahlen arbeitet.
    until (GCD(E, P) == 1) and (GCD(E, Q) == 1);
// erzeuge nun den privaten Entschlüsselungs Exponenten D
// D = E^-1 mod LCM(P-1, Q-1) == E^-1 mod Phi(N)
// E^-1 mod X ist eine Division in einem modularem Ring. Man lösst diese Berechnung mit Hilfe
// des Muliplikativen Inversen. Das modulare Multiplikative Inverse lässt sich mit dem erweiterten GCD() berechnen.
// D muß größer als E sein und teilerfremd zu N. Da die einzigsten Teiler von N die Primzahlen P,Q sein sollten
// kann D nur dann ein Teiler von N sein wenn D==P oder D==Q ist oder eben P,Q keine Primzahlen sind.
// GCD(D, N) == 1 überprüfen wird dies.
  until NInvMod(D, E, U) and (NSize(D) >= NSize(E)) and NGCD1(D, N);
So fertig ist dein RSA Schlüsselpaar.

Die FGInt == Fast Gigantic Integers (M. Waldenburg glaube ich mich zu erinnern hat diese Lib gecodet) sind leider alles andere als Fast und Gigantic. Such hier im Forum nach meinem DEC und den vielen Beispielsourcen für RSA. Ich habe nämlich im besonderen RSA hier schon mehrmals als Source gepostet.
Denoch solltest du in den FGInt Sourcen alle angesprochenen Funktionen finden, sprich GCD(), LCM(), Modulare Inversion -> InvMod() oder ExtGCD(). Deren algorithmische Implementierung in FGInt ist allerdings alles andere als auf dem modernsten Stand der Mathematik, denoch aber korrekt.

Gruß Hagen
  Mit Zitat antworten Zitat
WIN-MANww

Registriert seit: 23. Mai 2004
Ort: Schweiz
55 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: RSA: Privaten Schlüssel schneller berechnen

  Alt 1. Jun 2006, 17:43
Entschuldigung für die schlechte Fragestellung, also nochmal:

Mein Ziel ist es NICHT RSA zu knacken, ich will es lediglich anwenden. Mein Problem ist nun die Berechnung des privaten Exponenten d. Das funktioniert zwar nach dem Code, den ich am Anfang gepostet habe, ist aber ziemlich langsam...

Nochmal den Code von vorher als als Text:

Delphi-Quellcode:
function PrivateKeyCalc(e, phi : String) : String;
var
i, j: String;
begin
i := '0';
repeat
  i um 1 erhöhen.
  Resultat auf i setzen.
  Ein Mod zwischen e*i und phi durchführen, das Ergebnis in j schreiben.
until
 Durchführen bis j 1 ist und e alles andere als i
end;
Hoffe, das man es jetzt verstanden hat, denn das Problem ist ja: 1 = e*d mod phi(n)
Da es aber mehrere Lösungen dafür geben würde nehme ich j und multipliziere den ständig ändernden wert i mit e, bis j endlich 1 ist, dann habe ich d = i.
Fg:
WIN-MAN

"Never underestimate Radical Vision" - Startup
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#5

Re: RSA: Privaten Schlüssel schneller berechnen

  Alt 1. Jun 2006, 19:29
1 == e*d mod Phi(N), stellen wirs mal um ergibt dann

d = e^-1 mod Phi(N)

du musst also das Multiplikative Inverse von E berechen, also E^-1 mod X und hast dann D direkt berechnet.
Man macht dies intern fast immer mit dem Erweiterten ggT() oder in englisch dem extended GCD().

Der eggT() berechnet

D = U * A + V * B

wir benötigen

D == 1
A == E
B == Phi(N)
U == E^-1

ergibt


1 = E^-1 * E + V * Phi(N)

wobei wir V am Ende nicht benötigen.

Wir berechnen also ExtGCD(var E^-1, var V, const E, const Phi(N)) == 1, und sind daran interessiert das das Resultat == 1 sein muß (ansonsten gibts kein modulares multiplikatives Inverse), der Rückgabewert V nicht interersiert und wird unser E^-1 geliefert bekommen, da dies unser Decryption Exponent D ist.

Es kann nun sein das der Wert E^-1 vom ExtGCD() negativ ist. Halb so wild denn in diesem Falle addieren wir auf diese Variable einfach Phi(N) dazu.

E^-1 * E == 1 und somit ist V * Phi(N) == 0 mod Phi(N) da wir ja die Gleichung
1 = E^-1 * E + V * Phi(N) vorliegen haben.
1 = 1 + 0.

Dh. das multiplikative Inverse von E ist E^-1 und definiert als 1 == E * E^-1.

Gruß Hagen
  Mit Zitat antworten Zitat
WIN-MANww

Registriert seit: 23. Mai 2004
Ort: Schweiz
55 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: RSA: Privaten Schlüssel schneller berechnen

  Alt 1. Jun 2006, 21:05
Ah danke Hagen, nur werde ich aus deiner Antwort nicht so recht schlau... öhm woher bekomme ich jetzt D? Aus E^-1? Aber E^-1 ist ja meist keine natürliche Zahl.. Könntest du vielleicht einen Pseudocode schreiben, mit dem man direkt d erhalten würde wenn man jetzt e und phi(n) kennen würde? Also ich kenne ja noch mehr, auch p und q, aber ich denke die braucht man ja nicht... würde mich sehr freuen.
Fg:
WIN-MAN

"Never underestimate Radical Vision" - Startup
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#7

Re: RSA: Privaten Schlüssel schneller berechnen

  Alt 2. Jun 2006, 01:32
Code:
  repeat
    repeat
      P = RandomPrime()                      // Primzahl P erzeugen
      Q = RandomPrime()                      // Primzahl Q erzeugen
      N = P * Q                              // Public Modul N erzeugen
      E = Random() mod (2^(Ln2(Ln2(N)) * 4)) // public Exponent erzeugen, sollt BitSize(BitSize(N))*4
                                              // Bits groß sein BitSize(N) = Ln2(N)
    until GCD(E, N) = 1                       // E muß teilerfremd zu N = P*Q und somit auch P und Q sein
 
    Phi = LCM(P -1, Q -1)                    // Phi(N) = LCM(P -1, Q -1),
                                              //   das geht weil wir wissen das N in P,Q faktorisierbar ist
   
  until (ExtGCD(D, T, E, Phi) == 1) and      // D = E^-1 mod Phi(N), Decryption Exponent erzeugen
        (D > E) and                          // D muß größer E sein
        (GCD(D, N) = 1)                      // D muß teilerfremd zu N sein, und somit auch zu P und Q
R = ExtGCD(var U,V; const A,B) ist definiert als R = U*A + V*B

und nachfolgend mal eine RSA Schlüsselerzeugung als praktischer Source in meinem DECMath

Delphi-Quellcode:
procedure RSA;
// RSA 1024 Bit verschlüsselung
var
  P,Q: IInteger; // primzahlen
  N: IInteger;    // modulus
  E,D: IInteger; // public/private exponent
  U,Dp,Dq: IInteger; // private values to speedup decryption by factor 4
  M,C: IInteger; // Plaintext/Ciphertext
  X,Y: IInteger; // helper
begin
  repeat
  // erzeuge 512 Bit Primzahl P
    NRnd(P, 512);
    NBit(P, 512 -2, True); // setze 2'höchstes Bit in P um sicherzustellen das P*Q ein 1024 Bit N erzeugen
    NMakePrime(P, [1, 2]);
  // erzeuge 512 Bit Primzahl Q
    repeat
      NRnd(Q, 512);
      NBit(Q, 512 -2, True);
      NMakePrime(Q, [1, 2]);
    until NCmp(P, Q) <> 0; // verhindere unwahrscheinlichen Fall das P gleich Q ist
    if NCmp(P, Q) < 0 then NSwp(P, Q);   // make sure P > Q
  // erzeuge public Modul N = 1024 Bit, N = P * Q
    NMul(N, P, Q);
  until NSize(N) = 1024; // verhindere unwahrscheinlichen Fall das N nicht wie gewünscht 1024 Bit groß ist

// erzeuge sicheren public Exponenten E, private Exponenten D zur entschlüsselung
  NDec(P);
  NDec(Q);
  NLCM(U, P, Q); // U = LCM(P -1, Q -1)
  repeat
    repeat
      NRnd(E, NLog2(NSize(N)) * 4); // Exponent sollte 4*Log2(Log2(N)) groß sein, zufällig und ungerade
      NOdd(E, True);
    until NGCD1(E, P) and NGCD1(E, Q); // Exponent darf keinen gemeinsammen Teiler mit P oder Q haben, sprich nicht durch P,Q teilbar sein
 // erzeuge private Entschlüsselungsexponent D, D sollte >= E sein und keinen gemeinsammen Teiler mit N haben
  until NInvMod(D, E, U) and (NSize(D) >= NSize(E)) and NGCD1(D, N);

  NMod(Dp, D, P); // Dp = D mod (P -1), wird benötigt für Chinese Remainder Theorem CRT
  NMod(Dq, D, Q); // Dq = Q mod (Q -1)
  NInc(P);
  NInc(Q);
  NInvMod(U, P, Q); // U = P^-1 mod Q
// unser privater und öffentlicher Schlüssel sind nun fertig
// N,E ist der öffentliche Schlüssel
// N,D der private Schlüssel, wobei
// U,Dp,Dq,P,Q dazu gehören damit wir die Entschlüsselung um Faktor 4 beschleunigen können


// nun verschlüsseln wir M den PlainText
  NSet(M, 'Unser Geheimnis', 256);
  NCut(M, NHigh(N));       // M muß kleiner public Modul N sein
// CipherText C = M^E mod N
  NPowMod(C, M, E, N);       // C = M^E mod N

  Write(#21);
  WriteLn(#2'PlainText   : '#0, NStr(M, 16), ' = ', NStr(M, 256) );
  WriteLn(#3'CipherText : '#0, NStr(C, 16) );
  Write(#20#0);

// nun entschlüsseln wir auf herkömmliche Art,
//    X = M = C^D mod N
  WriteLn(#2'normal entschlüsselt'#0#30);

  NPowMod(X, C, D, N);

  WriteLn( NStr(X, 256) );

// nun die schnelle Variante per CRT = Chinese Remainder Theorem ca. 4 mal schneller
  WriteLn(#10#2'per CRT entschlüsselt: '#0#30);

  NPowMod(X, C, Dp, P);
  NPowMod(Y, C, Dq, Q);
  NSub(Y, X);
  NMulMod(Y, U, Q);
  NMul(Y, P);
  NAdd(Y, X);

  WriteLn( NStr(Y, 256), ' = ', NStr(Y, 16));

// oder
  WriteLn(#30);
  NPowMod(X, C, Dp, P);
  NPowMod(Y, C, Dq, Q);
  NCRT(Y, NInt([X, Y]), NInt([Dp, Dq]), NInt([U]));
  WriteLn( NStr(Y, 256) );
end;
NInvMod(var R, const A, const M) = modulares Inverses ist definiert als ExtGCD(var R, var Dummy, const A, const M).
NInvMod() ist damit nur eine spezialisierte Funktion des erweiterten ggT() -> extended GCD().


Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#8

Re: RSA: Privaten Schlüssel schneller berechnen

  Alt 2. Jun 2006, 01:41
Zitat:
aus E^-1? Aber E^-1 ist ja meist keine natürliche Zahl.
Falsch bzw. richtig

Also nochmal

1 = D * E mod Phi(N) -> D = E^-1 mod Phi(N).

Wir arbeiten hier immer in Modularen Ringen und somit sind alle Resultate ganze Zahlen. Da das Modul Phi(N) und N positive Zahlen sind könnte man das sogar einschränken auf die natürlichen Zahlen, sprich ganze positive Zahlen.

Das was dich nun stört ist die separate Betrachtung von E^-1. Als einfache Operation betrachtet ist es richtig was du sagst, eine reelle Zahl. Aber wir arbeiten ja modular mod Phi(N) und somit muß D = E^-1 mod Phi(N) dann ebenfalls eine postive ganze Zahl zwischen 0 und Phi(N) -1.

Die Inversion einer Zahl in einem Modularen Ring ist dabei aber nur unter bestimmten Umständen definiert. Wenn das Modul N oder Phi(N) teilerfremd zu E ist so können wir definitiv das modulare multiplikative Inverse berechnen.

Mit Hilfe des erweiteren ggT() können wir nun direkt aus E,Phi(N) dessen inverses E^-1 berechnen und dies alles im Zahlenbereich der ganzen Zahlen.

Gruß Hagen
  Mit Zitat antworten Zitat
WIN-MANww

Registriert seit: 23. Mai 2004
Ort: Schweiz
55 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: RSA: Privaten Schlüssel schneller berechnen

  Alt 2. Jun 2006, 10:39
Das hört sich alles sehr plausibel an, nur wenn ich das eggt von zum beispiel e= 229 und phi(n) = 288 berechne bekomme ich als eggt 1, was ja auch der grösste teiler ist, nur ist da keine spur von d, was nach meiner berechnung 205 sein sollte....
Fg:
WIN-MAN

"Never underestimate Radical Vision" - Startup
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#10

Re: RSA: Privaten Schlüssel schneller berechnen

  Alt 2. Jun 2006, 13:43
Das stimmt ja auch:

1 = U * A + V * B, umgestellt zu unseren Parametern

1 = (E^-1) * E + V * Phi(N)

1 = -83 * 229 + 66 * 288

e^-1 = d = -83

da wir aber im modularem Ring von Phi(N) == 288 arbeiten und das negative Vorzeichen von d = -83 nicht erwünscht ist rechnen wir noch

d = e^-1 mod Phi(N) was bei negativem d identisch ist zu
d = e^-1 + Phi(N) also

d = -83 mod 288 == -83 + 288 = 205

also

d = 205.

So, nun zeige mal den Funktionrumpf deiner erwetereten ggT() Funktion. Diese sollte 2 Eingabeparamater A,B haben und 3 Ausgabeparameter R,U,V.

R = eggt(out U,V, in A,B)

R = U * A + V * B umgestellt auf unsere Variablennamen wäre dies dann

1 = D * E + V * Phi(N) wobei

D = E^-1 ist also

1 = E^-1 * E + V * Phi(N)

und da E^-1 das multiplikative Inverse von E ist muß demzufolge

E^-1 * E = 1 sein. Somit ergibt sich für den Rest der Formel logischerweise

1 = 1 + V * Phi(N) und der formale Teil V * Phi(N) muß selber 0 ergeben damit der Rest der Formel stimmt, also

1 = 1 + 0

Verifizieren wir das

1 = D * E + V * Phi(N) -> 1 == -83 * 229 + 66 * 288 mod Phi(N)

66 * 288 == 19008 mod Phi(N) == 0 mod 288 und

-83 * 229 == -19007 mod Phi(N) == 205 mod 288

Das heist

1.) wir arbeiten in modularen Ringen und das bedeutet das wir JEDE Operation in einer solchen Formel (Kongruenzklasse) immer modulo Phi(N) rechnen müssen. Um den Unterschied zwischen normalen Formel und modularen Formeln hervorzuheben benutzt man das doppelte Gleichheitszeichen.
Beispiel:

1 == d * e mod Phi(N) bedeutet ausgeschrieben

1 mod Phi(N) = ((d mod Phi(N)) * (e mod Phi(N))) mod Phi(N)

und

d == e^-1 mod Phi(N) wäre

d mod Phi(N) = (e mod Phi(N))^-1 mod Phi(N).

2.) der erweiterte ggT() muß also als Rückgabewert immer 1 ergeben, was bedeutet das eine Inversion rechnerisch durchführbar ist. Sollte also 1 != D * E + v * Phi(N) rauskommen, der ggT() also NICHT 1 als Resultat liefern dann ist die Berechnung des modularen multiplikativen Inversen in dem gewählten Ring zum Modul Phi(N) nicht eindeutig. Das bedeutet E ist nicht teilerfremd zu Phi(N). Im Falle von RSA und der bekannten Faktorization von N in die zwei Primzahlen P,Q bedeutet dies das P oder/und Q keine richtigen Primzahlen sind. Liefert der erweiteret ggT() also nicht 1 so wissen wir das unsere Primzahlen P,Q falsch sind.


Fazit:

Du hast

1 == D * E mod Phi(N) in Worten also, D mal E ist kongruent zu 1 mod Phi(N). Das bedeutet D muß identisch zum modularen multiplikativen Inversen von E sein, als D == E^-1 mod Phi(N). Ergo:

1 == D * E mod Phi(N) ist identisch zu
1 == E^-1 * E mod Phi(N) und umgestellt ergibt das

D = E^-1 mod Phi(N).

Der private Decryption Exponent D ist einfach nur das Multiplkative Inverse im modularen Ring Z(N) vom public Encryption Exponenten E.

Da wir zur Berechnung von D die Faktorization von N in P,Q kennen müssen um Phi(N) berechen zu können entsteht eine "Trapdoor" Funktion (Hintertür Funktion). Denn ein Angreifer der aus N den privaten Decryption Exponenten berechnen will muß erstmal Phi(N) berechnen und dazu muß er N in P,Q faktorisieren.

Kennt man P,Q so kennt man Phi(N) und kann über den eggT() sehr einfach D berechnen aus E. Das geht sehr schnell.
Kennt man nur N so muß man N faktorisieren in P,Q was bei goßen P,Q (>= 512 Bit) eben praktisch unmöglich ist.

Eine Trapdoor Funktion ist also eine Funktion die mathematisch beweisbar mindestens 2 Wege bietet um ein Resulat zu berechnen. Der eine Weg, bei dem alle wichtigen Parameter bekannt sind, ist ein sehr leicht mathematisch zu berechnender Weg.
Der andere Weg bei dem bestimmte Parameter NICHT bekannt sind (hier P,Q und D und Phi(P*Q)) ist zwar auch mathemqtisch berechenbar, die dafür nötigen Algorithmen sind aber so komplex das sie mit berechenbar großen Parametern (P,Q) parktisch undurchführbar sind. (bzw. mann kan es versuchen wird aber mit heutiger Technik viele tausende Jahre benötigen).

Das Geheimnis vom RSA ist also diese Trapdoor Funktion und die gezielte Verteilung des RSA Schlüssels in ZWEI Teile: dem privaten Schlüsselteil und dem öffentlichen Schlüsselteil.

Wenn wir also beim RSA vom

öffentlichen Schlüssel E,N und vom
privaten Schlüssel D,N reden

so stimmt das eigentlich garnicht. Denn in beiden Fällen handelt es sich nur um EINEN Schlüssel aber in unterschiedlichen Formen !!

Denn in Wahrheit ist der

öffentliche Schlüssel E, P*Q
private Schlüssel E^-1, P*Q

der RSA Schüssel ist also E und P*Q denn wir können davon ZWEI unterschiedliche Formen ableiten

öffentliche Schlüsselform E und N
private Schlüsselform E^-1 und P*Q

Auf Grund das wir im öffenbtlichen Schlüssel nur E und N publizieren muß ein Angreifer sehr umständlich N faktorisieren in P * Q um dann Phi(P*Q) berechnen zu können und finaly aus E den pivaten Exponneten D = E^-1

Also poste mal den Funktionsrumpf deiner eggT() Funktion, damit ich beurteilen kann ob du die richtige Funktion benutzt.

Gruß Hagen
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:58 Uhr.
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