![]() |
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:
Dies sind die procedure's für die ent- und verschlüsselung...
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; 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 |
Re: RSA verschlüsselung funktioniert nicht... BITTE HELFT MI
Delphi-Quellcode:
i sollte vom Typ Byte oder Integer (Ganzzahling) sein
var i : single;
var acode : extended; begin // Klartext zu ASCII for i := 1 to length (klartext) do Single ist hier nicht richtig. Grüße Klaus |
Re: RSA verschlüsselung funktioniert nicht... BITTE HELFT MI
Das ist selbst im Ansatz kein RSA:
Delphi-Quellcode:
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
// 2 Durch formel ( C = M^e mod N ) verschlüsseln
acode := (acode + round(exp(7*ln(5))) mod 187);
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 |
Re: RSA verschlüsselung funktioniert nicht... BITTE HELFT MI
In diesem
![]() |
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. |
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:
zu #3 es ist nur ein beispiel.. also sind das nur testzahlen, damit das überhaupt erstmal funktioniert... ;)
klartext[i] := chr(acode);
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 |
Re: RSA verschlüsselung funktioniert nicht...
Zitat:
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:
Auch hier braucht es keinen Realwert sondern nur einen Ganzzahlwert
var acode : extended;
den Ord(...) liefert auch nur ein Integer zurück.
Delphi-Quellcode:
[/edit]
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; Grüße Klaus |
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 |
Re: RSA verschlüsselung funktioniert nicht...
Also das untere wird bei mir ohne Problem compiliert.
Delphi-Quellcode:
Deine Fehler müssen woanders stecken.
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; Grüße Klaus |
Re: RSA verschlüsselung funktioniert nicht...
Dann verwendest du irgendwo noch Singles.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz