Hallo Delphi Gemeinde!
Ich habe folgendes Problem, zu dem ich noch keine Lösung gefunden habe:
Ich muss einen String mit PHP verschlüsseln und mit Delphi wieder entschlüsseln.
Auf der PHP-Seite nutze ich die mcrypt-Erweiterung und folgenden Code:
Code:
<?php
$key = "schluessel";
$input = "Was zu verschlüsseln war.";
$encrypted_data = mcrypt_cfb (MCRYPT_BLOWFISH, $key, $input, MCRYPT_ENCRYPT, "12345678");
echo base64_encode($encrypted_data);
?>
Auf der Delphi-Seite arbeite ich mit der
DEC-Komponente und diesem Code:
Delphi-Quellcode:
function decryptCode(encryptedCodeString: string);
var
decryptedCodeString: string;
IV: string;
//IV: array[0..127] of Byte;
begin
IV := '12345678';
with TCipher_Blowfish.Create('', nil) do begin
// Block-Modus setzen
Mode := cmCFB;
InitKey('schluessel', @IV);
// Code entschlüsseln
decryptedCodeString := CodeString(encryptedCodeString, paDecode, -1);
end;
ShowMessage(decryptedCodeString);
end;
Leider hatte ich damit keinen Erfolg. In meinen Augen liegt das Problem bei dem Initial Vektor (IV).
Auf der PHP Seite ist er mehr oder weniger Pflicht (wenn man ihn nicht angibt, nimmt er einen Standardvektor
(so hab ich es jedensfalls verstanden)). Aber wie ich diesen IV ("12345678") unter Delphi mit einbaue, ist mir
nicht ganz klar. Ich habe mich zwar an dem
DEC-Beispiel (IVDemo.pas) orientiert. Aber da ich relativ neu im Delphi-Bereich
bin, kann es sein, dass ich da was übersehen habe.
Ich würde mich über hilfreiche Beiträge freuen.
Vielen Dank im Vorraus!
Tobi