Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi RSA verschlüsselung funktioniert nicht... (https://www.delphipraxis.net/112042-rsa-verschluesselung-funktioniert-nicht.html)

Bblackhawk 14. Apr 2008 11:42


RSA verschlüsselung funktioniert nicht...
 
Liste der Anhänge anzeigen (Anzahl: 1)
hi, ich habe ein programm für die verschlüsselung mit dem RSA verfahren gebastelt, bekkomme die entschlüsselung aber leider nicht hin...

ich gehe euch mal eben einen kleinen überblick über mein Programm...

Dies ist die grafische Oberfläche...
(jetzt im anhang (von admin so vorgeschrieben))
die Schlüssel haben wie ihr gleich im quelltext seht nichts zu sagen...

Delphi-Quellcode:
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 := (acode + round(exp(7*ln(5))) mod 187);
      // 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 : single;
var acode : extended;
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 := (acode - round(exp(23*ln(146))) mod 187);
      // 3 Das Zweichen mit dem ASCII- Code acode an der i-ten Stelle im chiffre ablegen
      klartext[i] := chr(acode);
    end;
end;
Dies sind die procedure's für die ent- und verschlüsselung...
Die verschlüsselung funktioniert, aber bei der entschlüsselung haut delphi immer die Fehlermeldung raus, dass die Schleifenvariable falsch sei...
Dies habe ich schon versucht mit dem Datentypen integer versucht zu behen, aber dafür sind die Zahlen einfach zu groß (bei diesem Beispiel wäre die zahl mit der man mod rechnet bei etwa 3,6*10^46)

Ich hoffe ihr habt eine gute Lösung für mein Problem...
Vielen Dank schonmal im voraus... :)

greetz
Bblackhawk

Klaus01 14. Apr 2008 11:45

Re: RSA verschlüsselung funktioniert nicht... BITTE HELFT MI
 
Delphi-Quellcode:
var i : single;
var acode : extended;
begin
  // Klartext zu ASCII
    for i := 1 to length (klartext) do
i sollte vom Typ Byte oder Integer (Ganzzahling) sein
Single ist hier nicht richtig.

Grüße
Klaus

gammatester 14. Apr 2008 12:12

Re: RSA verschlüsselung funktioniert nicht... BITTE HELFT MI
 
Das ist selbst im Ansatz kein RSA:

Delphi-Quellcode:
      // 2 Durch formel ( C = M^e mod N ) verschlüsseln
      acode := (acode + round(exp(7*ln(5))) mod 187);
Hier wird ja "nur" ein fester Wert drauf addiert im Gegensatz zur Formel. Wenn Du diese andere Art Verschlüsselung akzeptierst, ist die Entschlüsselung natürlich

Delphi-Quellcode:
       acode := (acode - round(exp(7*ln(5))) mod 187);
.

Aber implementiere mal nach den Formel, benutzte Integerarithmetik und suche nach "Schnelle Modulare Exponentation" (im wesentlich ausmultiplizieren und nach jedem Schritt mod ausführen).


Gruß Gammatester

Corpsman 14. Apr 2008 12:40

Re: RSA verschlüsselung funktioniert nicht... BITTE HELFT MI
 
In diesem Sample hier wird ein RSA gemacht, bzw wenigstens mal gezeigt.

Sharky 14. Apr 2008 12:47

Re: RSA verschlüsselung funktioniert nicht... BITTE HELFT MI
 
Hai Bblackwawk.

Ersteinmal: "Herzlich Willkommen in der Delphi-PRAXiS" :hello:

Eine "bitte" habe ich an Dich. Ändere den Titel deines Threads und nehme das "bitte helft mit!!!" heraus.

Hilfe sucht hier so ziemlich jeder ;-)

Wie das geht? Ganz einfach. Klicke bei deinem obersten Posting auf den "Edit-Button".

danke.

p.s. und hänhe bei der gelegenheit das Bild als Anhang an dein Posting.

Bblackhawk 14. Apr 2008 13:24

Re: RSA verschlüsselung funktioniert nicht...
 
zu #2 das problem ist, dass es dann, wenn ich den datentypen von i ändere, folgendes nicht mehr funktioniert...
Delphi-Quellcode:
klartext[i] := chr(acode);
zu #3 es ist nur ein beispiel.. also sind das nur testzahlen, damit das überhaupt erstmal funktioniert... ;)

zu #4 danke das bringt mich schon etwas weiter.. aber damit habe ich immernoch das problem, dass ich da nur zahlen verschlüsseln kann, was ich aber brauche sind texte... trotzdem vielen dank :)

Vielen dank nochmal für eure mühe... :)

habt ihr evtl noch vorschläge die funktionieren würden?

nice greetz
Bblackhawk

Klaus01 14. Apr 2008 13:38

Re: RSA verschlüsselung funktioniert nicht...
 
Zitat:

Zitat von Bblackhawk
zu #2 das problem ist, dass es dann, wenn ich den datentypen von i ändere, folgendes nicht mehr funktioniert...
Delphi-Quellcode:
klartext[i] := chr(acode);

Mit Verlaub, aber das glaube ich nicht das dem so ist.
Wenn Klartext bei Dir ein String ist, dann sind die Indizes
des Strings vom Typ Integer (Ganzzahl) und kein realWert.

[edit]
Warum ist bei acode so definiert:
Delphi-Quellcode:
var acode : extended;
Auch hier braucht es keinen Realwert sondern nur einen Ganzzahlwert
den Ord(...) liefert auch nur ein Integer zurück.

Delphi-Quellcode:
procedure tcodiermaschine.entschluesseln;
var
  i : Integer;
  acode : Integer;
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 := (acode - round(exp(23*ln(146))) mod 187);
      // 3 Das Zweichen mit dem ASCII- Code acode an der i-ten Stelle im chiffre ablegen
      klartext[i] := chr(acode);
    end;
end;
[/edit]

Grüße
Klaus

Bblackhawk 14. Apr 2008 13:52

Re: RSA verschlüsselung funktioniert nicht...
 
genau, dass hatte ich vorher auch so...
aber ich benutze extended, weil der wert von acode bei ca 3,6*10^46 liegt --> integer ist nicht ausreichend um dies darzustellen...

ich kopiere mal das, was delphi mir als fehlermeldung raushaut, vielleicht, bringt das weiter...

Dies wird von delphi ausgegeben...
[DCC Fehler] ukrypto.pas(70): E2032 FOR-Schleifenvariable muss von ordinalem Typ sein
[DCC Fehler] ukrypto.pas(73): E2010 Inkompatible Typen: 'Integer' und 'Single'
[DCC Fehler] ukrypto.pas(77): E2010 Inkompatible Typen: 'Integer' und 'Single'
[DCC Fehler] ukrypto.pas(77): E2008 Inkompatible Typen
[DCC Fehler] umain.pas(8): F2063 Verwendete Unit 'ukrypto.pas' kann nicht compiliert werden

Klaus01 14. Apr 2008 13:57

Re: RSA verschlüsselung funktioniert nicht...
 
Also das untere wird bei mir ohne Problem compiliert.

Delphi-Quellcode:
procedure entschluesseln(klarText:String;codetext:String);
var
  i : Integer;
  acode : int64; // auf int64 geändert
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 := (acode - round(exp(23*ln(146))) mod 187);
      // 3 Das Zweichen mit dem ASCII- Code acode an der i-ten Stelle im chiffre ablegen
      klartext[i] := chr(acode);
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  entschluesseln(edit1.Text,edit2.Text);
end;
Deine Fehler müssen woanders stecken.

Grüße
Klaus

MrKnogge 14. Apr 2008 13:58

Re: RSA verschlüsselung funktioniert nicht...
 
Dann verwendest du irgendwo noch Singles.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:53 Uhr.
Seite 1 von 3  1 23      

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