AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein RSA - Problem bei der verschlüsselung/entschlüsselung
Thema durchsuchen
Ansicht
Themen-Optionen

RSA - Problem bei der verschlüsselung/entschlüsselung

Ein Thema von schweindi · begonnen am 23. Feb 2010 · letzter Beitrag vom 24. Feb 2010
Antwort Antwort
Seite 1 von 3  1 23      
schweindi

Registriert seit: 4. Feb 2010
60 Beiträge
 
#1

RSA - Problem bei der verschlüsselung/entschlüsselung

  Alt 23. Feb 2010, 16:39
Hallo alle,
ich werkle jetzt schon länger an einigen Programmen für die Schule und brauche jetzt für das letzte noch RSA.

Ich habe eig alles schon fertig geschrieben, leider funzt da irgendetwas nicht ganz perfekt und ich bin mir ziemlich sicher, dass es mit hohen Potenzen und anschließenden modulo Rechnungen zusammenhängt.

So jetzt mal was ich bisher gemacht habe:

Delphi-Quellcode:
p:=p1;
q:=q1;
N:=p*q;
phiN:=(p-1)*(q-1);
repeat
e:=Random(1024);
until ((e mod phiN)<>0)and(e<2048);
d:=mod_inv(phiN,e);
da sind einmal p, q, N, und phi(N) sowie e und dann das multipl. Inverse von phi(N) und e.
p1 & q1 sind integer generiert aus Random(2048)...

mod_inv(phiN,e) befindet sich in einer dll, die ich für alle Programme verwende:
Delphi-Quellcode:
function mod_inv(A,B:Integer):Integer;export;
var n1,n2,b1,b2,q,r,t:Integer;
Fertig:Boolean;
begin
if a < 1 then
  begin
  Result:=a;
  end else
  begin
  Fertig:=False;
  n1:=A;
  n2:=B;
  b1:=0;
  b2:=1;
  repeat
   r:=n1 mod n2;
   q:=n1 div n2;
   if r=0 then
   begin
    if b2 < 0 then
    b2:=b2+65537;
    Result:=b2;
    Fertig:=True;
   end else
    begin
    n1:=n2;
    n2:=r;
    t:=b2;
    b2:=b1-q*b2;
    b1:=t;
    end;
  until Fertig;
  end;
end;
so und hier noch der letzte teil:
Input = ein Text von Edit1.Text
symbcode(Input) = eine funktion, die jeden Buchstaben in die entsprechende Zahl umwandelt (A:1,B:2,C:3...)
ich habe iwo gelesen, man könnte es auch direkt mit den ASCII codes machen und dann glaub ich char() aber ich wollte es mal so probieren.
Die function hab ich schon getestet und sie gibt die richtigen Werte aus.
Delphi-Quellcode:
for i:=1 to length(Input) do
begin
debug:=StrToInt(symbcode(Input)[i]);
Memo1.Lines.Add('Eingabe: '+IntToStr(debug)+' d: '+Inttostr(d));
y:=expmod(debug,e,N);
Memo1.Lines.Add('Code: '+IntToStr(y));
Memo1.Lines.Add('Klartext: '+IntToStr(expmod(y,d,N)));
end;
so und jetzt noch die function expmod(a,b,c)... ich hatte leider keine Ahnung wie ich von den "riesen Zahlen" mod rechen soll, wenn sie hunderte stellen haben, deshalb hab ich diese function verwendet, ka wo ich sie gefunden hab.
(unverändert)

Delphi-Quellcode:
function expmod(b,x,m :integer):extended;export;
  var
    quad,halb,erg:Integer;
   {
    Berechnet die diskrete Exponentialfunktion b hoch x modulo m
    unter ausschließlicher Verwendung der Operationen Quadrieren
    und Multiplizieren. Der Rest wird nach jeder Operation bestimmt,
    um große Zwischenergebnisse zu vermeiden
    mod bezeichnet die Modulo-Operation
    div bezeichnet die ganzzahlige Division
   }

begin
  Quad := b; //basis
  Halb := x; //hochzahl
  Erg := 1; //Ergebnis
  while Halb > 0 do
    begin
      if Halb mod 2 > 0 then
         Erg := (Erg * Quad) mod m;
       Quad := (Quad * Quad) mod m;
       Halb := Halb div 2;
    end;
  result := Erg;
end;
bei kleinen werten:
e,d=3
p,q < 100 funktioniert es bei A=01 aber sobald e,d,p,q größer werden oder B=02 eingegeben wird kommt es zu Fehler, so dass der "codierte"Buchstabe plötzlich den Wert 0 bekommt...

sieht jemand schon einen Fehler?

lg
Schweindi
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#2

Re: RSA - Problem bei der verschlüsselung/entschlüsselung

  Alt 23. Feb 2010, 16:59
RSA setzt voraus, daß p und q Primzahlen sind!
  Mit Zitat antworten Zitat
schweindi

Registriert seit: 4. Feb 2010
60 Beiträge
 
#3

Re: RSA - Problem bei der verschlüsselung/entschlüsselung

  Alt 23. Feb 2010, 17:10
ahaaa... naja daran hab ich eig nicht gedacht

ja ich änder das mal schnell und mal sehen...
danke!
  Mit Zitat antworten Zitat
schweindi

Registriert seit: 4. Feb 2010
60 Beiträge
 
#4

Re: RSA - Problem bei der verschlüsselung/entschlüsselung

  Alt 23. Feb 2010, 17:51
also, es werden jetzt immer schöne primzahlen verwendet..
2 mögliche Fehler:
1) die verschlüsselung / entschlüsselung ergibt immer noch 0
2) der "Code" "Klartext" ist bei G(7) gerade 75 gewesen... da kann also auch iwas nicht stimmen, aber danke für den primzahlen Hinweis!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#5

Re: RSA - Problem bei der verschlüsselung/entschlüsselung

  Alt 23. Feb 2010, 18:41
Über Hier im Forum suchenRSA findet man Einiges, aber auch nicht zuviel ... schau dir doch einfach mal einige dieser Threads an.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#6

Re: RSA - Problem bei der verschlüsselung/entschlüsselung

  Alt 23. Feb 2010, 19:42
Das Ergebnis von expmod ist extended, also kann eigentlich
Delphi-Quellcode:
y:=expmod(debug,e,N);
Memo1.Lines.Add('Code: '+IntToStr(y));
nicht übersetzt werden. Wenn y integer ist, geht die erste Zeile nicht, sonst die zweite. Hast Du eventuell expmod in Deinem Code als integer deklariert und die DLL liefert extended? Warum ist überhaupt das Ergebnis von expmod extended, da Du doch alles integer rechnest?
  Mit Zitat antworten Zitat
schweindi

Registriert seit: 4. Feb 2010
60 Beiträge
 
#7

Re: RSA - Problem bei der verschlüsselung/entschlüsselung

  Alt 23. Feb 2010, 21:31
so ich habe jetzt mal das ergebnis von expmod zu integer gemacht und hab eben auch bemerkt:

Bei RSA muss ja N > text zum verschlüsseln -> ich versuch mal p&q ordentlich groß zu machen und e ein bisschen einzuschränken, damit das auch mal stimmt.

Kann ich da, damit es größer wird, integer ersetzen? Ich weiß, dass extended der größte Typ ist, aber da gibt es doch probleme mim Darstellen bzw bei mir ging aus trunc(extendend) oft ein Floating Point error hervor?
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#8

Re: RSA - Problem bei der verschlüsselung/entschlüsselung

  Alt 23. Feb 2010, 23:58
Die Größe von e ist das kleinste Problem. Wenn Du statt integer überall den größeren Typ int64 nimmst, kannst Du für p,q bis zu ca 55000 gehen.
  Mit Zitat antworten Zitat
schweindi

Registriert seit: 4. Feb 2010
60 Beiträge
 
#9

Re: RSA - Problem bei der verschlüsselung/entschlüsselung

  Alt 24. Feb 2010, 00:15
ahso... naja ich dachte nur weil der klartext ^e genommen wird, aber ich sehe ja bei expmod ist die hochzahl ja umgangen...

Und noch eine frage, ist es notwendig 2-3 zeichen zusammenzufassen oder kann man, so wie ich jeden buchstaben einzeln verschlüsseln?

was für zahlen kann ich mir da erwarten bei e:=1024, p,q ca. 25000-30000 und die zu verschlüsselnde Zahl 1-41?

EDIT:
Ich habe jetzt mal alle "großen Zahlen" zu Int64 gemacht und es läuft jetzt mal sehr schön, aber nur wenn ich A(01) eingebe...

Dann berechnet er schön:
input = 1
Code = 1 also A

Wenn ich aber zb B(02) eingebe bzw Z(26) dann sieht das so aus:
[B(02)]:
input = 2
d = -20138308
Code = 1 (sollte 2 sein!)
Klartext = 2145688 (entschlüsselt, sollte auch 2 sein)

[Z(26)]:
input = 26
d = 41659327
Code = 1 (sollte 26 sein!)
Klartext = 3188353 (entschlüsselt, sollte auch 26 sein)

also schließe ich richtig, dass "d", also das multiplikative inverse falsch berechnet wird?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#10

Re: RSA - Problem bei der verschlüsselung/entschlüsselung

  Alt 24. Feb 2010, 07:02
Schalte mal die Überlaufprüfung ein.
siehe Projektoptionen
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 01:04 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