Delphi: шифрование AES CBC, совместимое с PHP mcrypt_encrypt

Я пытаюсь зашифровать данные в Delphi, а затем расшифровать их в PHP, но вывод Delphi отличается от того, что я получаю с PHP, поэтому я сначала проверяю, одинаковы ли оба выхода PHP и Delphi при шифровании строки:

Шифрование Delphi с использованием DCPcrypt:

Uses DCPcrypt2, DCPblockciphers, DCPrijndael;

var Cipher : TDCP_rijndael;
Data, Key, IV : Ansistring;
begin
key := '12345678901234567890123456789012';
iv  := '1234567890123456';
Data := 'thisis128bitstxt';

Cipher := TDCP_rijndael.Create(nil);
Cipher.Init(Key[1],128,@IV[1]);
Cipher.EncryptCBC(Data[1],Data[1],Length(Data));
Cipher.Free;

With TMemoryStream.Create do begin
Write(Data[1],Length(Data));
SaveToFile('z:\delphi');
Free;
end;

Теперь код в PHP:

<?php
$source = "thisis128bitstxt"; //128-bits block
$key = "12345678901234567890123456789012"; // 32
$iv = "1234567890123456"; // 16
$source = mcrypt_encrypt(MCRYPT_RIJNDAEL_128,$key,$source,MCRYPT_MODE_CBC,$iv);
$out = fopen ('php', 'w');
fwrite ($out, $source);
fclose ($out);
?>

Результаты:

введите описание изображения здесь

В чем дело?

1

Решение

Изменить:

$source = mcrypt_encrypt(MCRYPT_RIJNDAEL_128,$key,$source,MCRYPT_MODE_CBC,$iv);

чтобы:

$source = mcrypt_cbc(MCRYPT_RIJNDAEL_128,$KEYkey$source,MCRYPT_ENCRYPT,$iv);
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector