Thema: Delphi RSA-Verschlüsselung

Einzelnen Beitrag anzeigen

fortuneNext

Registriert seit: 11. Aug 2007
Ort: Neuss
133 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: RSA-Verschlüsselung

  Alt 18. Mär 2009, 17:41
Schon lustig, eine Facharbeit schreibe ich auch über Kryptographie, aber RSA ist bei mir nur einer der 5 behandelten Algorithmen
Bei mir ist jetzt aber auch ein winzig kleines Problem aufgetaucht, und ich bin mir nicht sicher, ob ich ein neues Topic eröffnen soll... Der Titel trifts hier eigentlich ganz gut

Und zwar:
p = 7
q = 13
N = 91
Eul N = 72
e = 23
d = 47
Klartext = 1337
Verschlüsselt: 84
Entschlüsselt: 63

Das macht doch keinen Sinn.
Das Problem liegt scheinbar in der modularen Exponentation. Ist normal, dass ein solch falsches Ergebnis herauskommt? Ich kann es mir ja im Prinzip vorstellen, denn mod 91 auf eine 1337 anzuwenden kann ja nicht zum gewünschten Ergebnis führen...
Gut, dass mir der Fehler jetzt schon auffällt - Abgabe am Montag.
:-O

Delphi-Quellcode:
function ExpMod(b, x, m: integer): integer;
var
  quad, halb: integer;
begin
  quad := b;
  halb := x;
  Result := 1;
  while halb > 0 do
  begin
    if halb mod 2 > 0 then
      Result := (Result * quad) mod m;
    quad := (quad * quad) mod m;
    halb := halb div 2;
  end;
end;
Delphi-Quellcode:
function TRSA.Decrypt(text:String; d, N:integer):string;
var
  x, temp:integer;
begin {
  temp := 1;
  for x := 1 to d do
    temp := (temp * StrToInt(text) mod N);
  Result := IntToStr(temp);              }

  Result := IntToStr(ExpMod(StrToInt(text), d, N));
end;
(Das im Kommentar bringt dasselbe Ergebniss, ist auch dieselbe Methode wie zum Verschlüsseln. So ganz hab ich noch nicht verstabden, wozu die Exponentation gebraucht wird, man kann es ja auch einfach berechnen...
Auf jeden Fall weiss ich nicht ob ich was falsch gemacht habe, oder ob ich vielleicht nur schlechte Zahlen gewählt habe?
Danke!

Grüße
fortuneNext
Tim
"Hilfe & Support konnte nicht geöffnet werden. Bitte öffnen sie Hilfe & Support, um das Problem zu beheben."
"No Keyboard found. Press F1 to continue."
  Mit Zitat antworten Zitat