Thema: Delphi RSA Hilfe

Einzelnen Beitrag anzeigen

andy21

Registriert seit: 24. Nov 2007
36 Beiträge
 
#17

Re: RSA Hilfe

  Alt 28. Nov 2007, 19:51
Hallo,

bei mir kommt ein Exception-Fehler der Klasse Iinteger, wenn ich mit RSA wieder entschlüsseln will (und den geheimen Schlüssel d über den euklidischen Algorithmus ermittele). Und zwar "Iinteger division by zero", welches auf die Zeile u:=v0; zeigt. Welche Division meint der Compiler? Die nmod zwei Zeilen darüber oder ndiv zwei Zeilen darunter? Ich weiß auch nicht warum dort etwas null sein sollte. Diese Fehlermeldung macht mich noch fertig.



Code:
function tform1.invers_mod(e,o: iinteger): iinteger;
  var d,v: iinteger;
begin
  nrnd(d,4048);
  nrnd(v,4048);
  ggTerw(e,o,d,v); //der Funktionswert von ggT wird nicht benötigt
  if ncmp(d,z) < 0 then nadd(d,o);
  result := d;
end;


Function tform1.ggTerw(a,b: iinteger; var u,v: iinteger):iinteger;
  var u0, v0,z1,z2:iinteger;
begin
  nrnd(z1,4048);
  nrnd(z2,4048);
  if b = z then Begin
    nset(result,a);
    nset(result,1);
    nset(v,0);
  End else Begin
    nmod(a,b);
    result := ggTerw(b, a, u0, v0);//rekursiv
    u := v0; //Hier zeigt der Pfeil hin, wenn das Programm abkracht.
    a := z2;
    ndiv(z2,b);
    nmul(z2,v0);
    nsub(v,u0,z2); //    v := u0 - (a div b)*v0;
  End;
end;

Kann mir jemand sagen wo der Fehler liegt?

Edit: Ach, anscheinend liegt es an ndiv, ich habe den Fehler gefunden; falsch verglichen.
  Mit Zitat antworten Zitat