Hallo,
ich hoffe hier benutzt jemand Lockbox 3 zur Datenverschlüsselung und kann mir bei meinem Problem weiterhelfen.
Ich möchte Daten in AES und CBC Mode verschlüsseln und dann mit der PHP Funktion mcrypt_cbc() wieder entschlüsseln.
Das ist die Lockbox Komponente:
Delphi-Quellcode:
object Codec1: TCodec
AsymetricKeySizeInBits = 1024
AdvancedOptions2 = []
CryptoLibrary = CryptographicLibrary1
Left = 496
Top = 40
StreamCipherId = 'native.StreamToBlock'
BlockCipherId = 'native.AES-192'
ChainId = 'native.CBC'
end
object CryptographicLibrary1: TCryptographicLibrary
Left = 568
Top = 40
end
Beim Klick auf eine Schltfläche soll eine Zeichenkette mit einem Passwort verschlüsselt werden.
Delphi-Quellcode:
procedure TfrmMain.Button1Click(Sender: TObject);
var
base64Ciphertext : AnsiString;
plaintext: String;
begin
plaintext := 'LockBox3Test';
Codec1.Cipher := 'native.AES-128'
Codec1.Password := 'MeinPasswort123';
Codec1.EncryptString( plaintext, base64Ciphertext);
boxCipherTextOut.Text := base64Ciphertext;
end;
Ich erhalte z.B. die Base64kodierte zeichenkette: yMvS0IobfNR179gFFvyOE5+/cvm1bo1q+JfZ9WnFRtA=
Diese soll in den ersten 8 Bytes (Zeichen) den Initialisierungsvektor IV beinhalten. In Lockbox wird dieser aus Sicherheitsgründen ja zufällig erzeugt.
Mein PHP Skript sieht jetzt folgendermaßen aus:
Delphi-Quellcode:
<?php
$pwd = 'MeinPasswort123';
$cipherText = 'yMvS0IobfNR179gFFvyOE5+/cvm1bo1q+JfZ9WnFRtA=';
$iv = substr ( $cipherText, 0, 8 );
$encryptedcbc = mcrypt_cbc(MCRYPT_RIJNDAEL_128, $pwd, $cipherText, MCRYPT_DECRYPT, $iv);
echo 'CBC encrypted: '.base64_encode($encryptedcbc);
?>
Leider erhalte ich nicht die ursprüngliche Zeichenkette.
Was mache ich falsch? Habe ich beim Auslesen des IV einen Denkfehler?
Besten Dank für jede Unterstützung.