Я хочу зашифровать некоторые данные фиксированной длины (512 байт) с помощью алгоритма шифрования AES в PHP, а затем расшифровать их в C.
Код PHP выглядит следующим образом.
$plaintext = "..."; // 512bytes.
$iv = "..."; // 128bits long;
$password = "..."; // 128bits long;
$ciphertext = openssl_encrypt ($plaintext, 'aes-256-cbc', $password, true, $iv);
Затем я записываю зашифрованный текст в файл и, в свою очередь, открываю его программой на C, исходный код которой выглядит так же, как эта страница.
Но, к счастью, это не работает. Вывод программы на C является чем-то нечитаемым.
Может кто-нибудь сказать мне, что не так, и есть ли альтернативный способ выполнить эту миссию?
ОБНОВЛЕНИЕ:
Полный код PHP здесь:
<?php
$string = 'The quick brown fox jumps over the lazy dog';
$pass = '01234567890123456789012345678901';
$iv = 'NiceToMeetYou^-^';
$method = 'aes-256-cbc';
file_put_contents ('./file.encrypted', openssl_encrypt ($string, $method, $pass, TRUE, $iv));
?>
Код C полностью такой же, как эта страница, кроме iv, который изменен на NiceToMeetYou ^ — ^.
Выход PHP
00000000 11 58 bf 4e 1c f7 ff f5 56 dc 9b 01 32 fe 16 66 |.X.N....V...2..f|
00000010 4b aa 0f ca e1 b7 a8 5f c8 64 83 bf d6 88 02 59 |K......_.d.....Y|
00000020 26 0a 62 00 27 2d 78 b4 70 82 d4 9a ac bf 1b c7 |&.b.'-x.p.......|
Файл, сгенерированный программой на C:
0000 - 67 95 70 57 7d d4 52 49-fc 5d 2a 06 3d 66 ef 21 g.pW}.RI.]*.=f.!
0010 - 57 0d e0 cf aa b9 c0 71-b5 ad 0e 0b 56 26 6b 2e W......q....V&k.
0020 - aa 99 4f 47 2e 6e 08 d7-ec f1 bf a0 8e f3 0d 0a ..OG.n..........
Задача ещё не решена.
Других решений пока нет …