Einzelnen Beitrag anzeigen

qwertz543221
(Gast)

n/a Beiträge
 
#11

Re: Chinesischer Restsatz, pseudocode gesucht

  Alt 25. Jun 2009, 18:29
habe jetzt p-1 und q-1 durch neue variablen erstzt
mit automatisch meinte ich, dass ich dafür zufallszahlen wählen lasse und dann auf primalität prüfe.
Es werden solange primzahlen gesucht bis p<>q

und modinvers habe ich berichtigt:
Delphi-Quellcode:
 function modinvers(e,n:ansistring):ansistring;
        var de,k:ansistring;
        begin
        k:='1';
        de:='1';
        while mathe.Modulo(de,e)<>'0'  do
        begin
        de:=mathe.produkt(k,phi);
        mathe.Plus1(de);
        mathe.Plus1(k);
        end;
        result:=mathe.Quotient(de,e);
        end;
h wird jetzt in einzelschritten berechnet


....

und trotzdem dauert die erstellung der schlüssel jetz über 30 sekunden( bei n=391.198.919)
das ergebnis der entschlüsselung ist... - falsch


so sieht der qt momentan aus:
Delphi-Quellcode:
//global:
d,p,q,phi,n,dp,dq,qinv:ansistring; //chin RS


function tform1.GGT(n, m: ansistring): ansistring;
var mathe:tmathe;
begin
mathe:=tmathe.Create;
  if m = '0then Result := n
  else Result := ggt(m, mathe.Modulo(n,m));
end;

function tform1.rsadec(text:ansistring;d,n:ansistring):ansistring;

var textneu:ansistring;
i:int64;
wa,z1,z2,z3,m_1,m_2,m,h:ansistring;
mathe:tmathe;

begin
textneu:='';
result:='';
m_1:='0';
m_2:='0';
m:='0';
h:='0';
mathe:=tmathe.Create;
i:=1;

while i<=length(text) do
  begin
  application.ProcessMessages;
  wa:=copy(text,i,length(n));
  //wa:=mathe.PotenzModulo(wa,d,n);
  {
  m_1 = c^dp mod p and m_2 = c^dq mod q
  h = (m_1 - m_2) * qInv mod p
  m= m_2 + q * h
  }


  m_1:=mathe.PotenzModulo(wa,dp,p);
  m_2:=mathe.PotenzModulo(wa,dq,q);

  h:=mathe.Differenz(m_1,m_2);
  h:=mathe.modulo(h,p);
  h:=mathe.ProduktModulo(h,qinv,p);

  m:=mathe.summe(m_2,mathe.Produkt(q,h));
  wa:=m;

  textneu:=textneu+chr(strtoint(mathe.Quotient(wa,'256')))+chr(strtoint(mathe.Modulo(wa,'256')));
  i:=i+length(n)
  end;
result:=textneu;
end;
  Mit Zitat antworten Zitat