Ich benutze einen stark modifizierten Ansatz nach dem Buch: Doberenz + Kowalski: Borland Delphi 7 – Kochbuch (2003) S. 894-895.
Erstelle dazu zwei Routinen:
Function String_Verschluesseln(S: Str255): AnsiString; // Hexadezimal-String-Array
Function String_Entschluesseln(SS: AnsiString): Str255;
Für die Ver- und Entschlüsselung benutze einen Zufallszahlen-Generator, dessen Zufallsfolge Du selber festlegen kannst (= eindeutig reproduzierbar) z.B. über
System.RandSeed:= MeinGeheimCode;
MeinGeheimCode ist üblicherweise eine LongInt-Zahl z.B.
Delphi-Quellcode:
CONST
MeinGeheimCode:= 123456789;
Damit erstellst Du einen langen Vektor
Delphi-Quellcode:
VAR
SuperKey: Array[1..KeySize] of Byte;
KeySize kann z.B. 1000 oder länger sein.
Diesen füllst Du mit zufälligen Bytes z. B. bei
System.RandSeed:= 0;
mittels obigen Zufallszahlen-Generator und verschlüsselst Du Dein Passwort aus den Zeichen des SuperKey-Arrays bei
System.RandSeed:= MeinGeheimCode;
Im Programm musst Du nur die zwei an und für sich harmlosen Konstanten speichern:
1): Das verschlüsselte Passwort als Hexadezimale String-Constante ab z. B:
Delphi-Quellcode:
Const
MeinGeheimPasswort ='168AEEAF481AE6E2911D8E1EB1F7A9CCBCE145A2E0AFC1';
2):
Delphi-Quellcode:
CONST
MeinGeheimCode:= 123456789;
Vorsicht! Im Programm musst Du mindestens einmal einen Zugriff auf diese Konstanten machen, damit Delphi’s Optimierer sie nicht aus dem Code rauschlöscht.
Wichtig ist beim Zufallszahlen-Generator, daß Du den kompletten Quellcode dazu hast, weil Delphi’s Zufallszahlen-Generatoren sich manchmal von Version zu Version sich unterscheiden und daher nicht kompatibel (reproduzierbar) sind!
Gute Zufallszahlen-Generatoren, aber auch komplette Verschlüsselungsroutinen findest Du z.B. bei
https://sslsites.de/wolfgang-ehrhardt.de/index_de.html
Gruß, Andreas