Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Verschlüsslungsroutine läuft unter Delphi 2010 nicht mehr
jsfrigo - Do 27.05.10 16:07
Titel: Verschlüsslungsroutine läuft unter Delphi 2010 nicht mehr
Ich habe eine einfache Verschlüsselungsroutine geschriben die unter Delphi 7 noch einwandfrei funktioniert hat.
Unter Delphi 2010 liefert die Entschlüsselungsrooutine jedoch manchmal ein falsches Ergebnis.
Hier der Quellcode:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42:
| function TfMain.PasswortVerschluesseln(unverpass:string):string; var einzel,verpass:string; i,einzelzahl:integer; zeichen: char; begin verpass:=''; for i := 1 to length(unverpass) do begin einzel:=unverpass; zeichen:=einzel[i]; einzelzahl:=ord(zeichen)+funktionswert(i*i); while einzelzahl > 255 do einzelzahl := einzelzahl - 224; while einzelzahl < 32 do einzelzahl := einzelzahl + 224; verpass:=verpass + chr(einzelzahl); end; result:=verpass; end;
function tfMain.passwortentschluesseln(verpass:string):string; var unverpass:string; i,einzelzahl:integer; zeichen:char; begin unverpass:=''; for i := 1 to length(verpass) do begin zeichen:=verpass[i]; einzelzahl:=ord(zeichen)-funktionswert(i*i); while einzelzahl > 255 do einzelzahl := einzelzahl - 224; while einzelzahl < 32 do einzelzahl := einzelzahl + 224; unverpass:=unverpass + chr(einzelzahl); end; result:=unverpass; end;
function TfMain.funktionswert(x:integer):integer; begin result:= 2*x*x+5*x+3 end; |
Wenn Fehler auftreten, treten diese auch nur bei einzelenen Zeichen auf.
Also wenn ich z.B. jörgs ver und anschließend entschlüssele kommt jörg€ dabei herraus??
Gruss
Moderiert von
Gausi: Delphi-Tags hinzugefügtModeriert von
Narses: Topic aus Sonstiges (Delphi) verschoben am Fr 28.05.2010 um 09:36
platzwart - Do 27.05.10 16:13
Stichwort Unicode? Unicode kam mit Delphi 2009...
jsfrigo - Do 27.05.10 16:29
Den Unicode hatte ich auch schon im Verdacht. ABer was heißt das jetzt konkret in meinem Fall
Welche Funktonen muss ich statt ord und chr den Verwenden um die Zeichen umzuwandeln?
Ansichar statt char funktioniert zwar beim verschlüssel aber das entschlüsseln funktioniert trotzdem nicht????
Gausi - Do 27.05.10 16:40
Für mich sieht das auch nach einem Unicode-Problem aus, auch wenn ich die Ursache in dem Code nicht direkt ausmachen kann. :lupe:
Da du aber sowieso nur mit den Ansi-Zeichen arbeitest und alles andere eh wegschneidest, würde ich dann auch nur mit AnsiStrings arbeiten. Ersetze also mal alle Char durch AnsiChar und alle String durch AnsiString. Dann sollte sich das eigentlich genauso wie unter Delphi7 verhalten.
jsfrigo - Fr 28.05.10 07:30
Ich habe im Code jetzt char durch ansichar , bzw string durch ansistring ersetzt.
Jetzt funktioniert es. Danke.
Muss jetzt eigentlich im gesamten Projekt string durch ansistring ersetzt werden??
platzwart - Fr 28.05.10 10:56
Nur dort, wo du explizit keinen Unicode verwenden willst.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!