Hallo Welt,
Ich möchte meine Daten, die in Delphi als Resourcen eingebunden sind, vor dem Kompilieren verschlüsseln und zur Laufzeit wieder entschlüsseln. Als Algorithmus habe ich RC6 gewählt, da dieser schon anderweitig im Projekt verwendet wird.
Die Daten, die als Resourcen eingebunden werden, verschlüssle ich mit Perl (ActivePerl), mit dem Modul Crypt::RC6 von cpan:
Code:
#
# Create RC6 cipher
$cipher = new Crypt::RC6 $password;
#
# Read data, encrypt them and write them back
while ($readLen = read(CLEAR_FILE, $fileBuf, 16)) {
if ($readLen < 16) {
$fileBuf = pack("a16", $fileBuf);
};
$encryptedData = $cipher->encrypt($fileBuf);
print ENC_FILE $encryptedData;
};
Beide Dateien sind mit binmode geöffnet worden. Auf der Delphi-Seite verwende ich den RC6 aus der
DEC Komponente:
Delphi-Quellcode:
decAlg := TCipher_RC6.Create();
try
decAlg.Init(password);
Result := decAlg.DecodeBinary(sText);
finally
decAlg.Free();
end; // try - finally
Das Problem: Ich kann die Daten in Delphi nicht mehr entschlüsseln. Überprüft habe ich:
- Passworte: Beide identisch (32 Bytes)
- Anzahl Runden bei der Verschlüsselung: bei beiden 20
- Blockgrösse: bei beiden 16 Bytes
Was mache ich falsch, bzw. an welchen Stellen muss ich was ändern? Ist mein Padding in Perl falsch? Muss ich Delphi noch etwas setzen?
Gruss SF