Einzelnen Beitrag anzeigen

Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.757 Beiträge
 
Delphi 10.4 Sydney
 
#14

Re: RSA verschlüsselung funktioniert nicht...

  Alt 14. Apr 2008, 15:25
Hallo,

im Prinzip sollte RSA so laufen.
Problem dabei ist, es kommen dabei sehr große Zahlen
ins Spiel. Da reicht int64 nicht mehr.

Hier im Forum gibt es einige Beispiele mit BigInt.
Diese Typen wären dazu eher geeignet.
Grüße
Klaus

Delphi-Quellcode:
{
  RSA :  p=7 q=11
  p * q = 77 = N
  phi(N) = (p-1)* (q-1) = 60
  e teilerfremd zu phi(N) = 23
  -> e=23 und N=77 public Key
  wird zum Verschlüsseln benötigt

  Berechnung der inversersen zu e
  e* d +k * phi(N) ? 1 = ggT(e,phi(N))
  23 * d + k * 60 = 1 = ggT(23,60)
  23 * 47 + (-18) * 60 = 1
  -> d = 47 N=77 -> privater Schlüssel

}


// für power die math unit einbinden

procedure tcodiermaschine.verschluesseln;
var i, acode : integer;
begin
  // Klartext zu ASCII
    for i := 1 to length (klartext) do
    begin
      // 1 ASCII- Code der i-ten Buchstaben ermitteln
      acode := ord(Klartext[i]);
      // 2 Durch formel ( C = M^e mod N ) verschlüsseln
      acode := round(power(acode,23)) mod 77;
      // 3 Das Zweichen mit dem ASCII- Code acode an der i-ten Stelle im chiffre ablegen
      codetext[i] := chr(acode);
    end;
end;

procedure tcodiermaschine.entschluesseln;
var i : integer;
var acode : int64;
begin
  // Klartext zu ASCII
    for i := 1 to length (klartext) do
    begin
      // 1 ASCII- Code der i-ten Buchstaben ermitteln
      acode := ord(codetext[i]);
      // 2 Durch formel ( M = C^d mod N ) verschlüsseln
      acode := round(power(acode,47)) mod 77;
      // 3 Das Zweichen mit dem ASCII- Code acode an der i-ten Stelle im chiffre ablegen
      klartext[i] := chr(acode);
    end;
end;
Klaus
  Mit Zitat antworten Zitat