PHP: openssl_encrypt результат 32o строка с 16o строка ввода - PullRequest
0 голосов
/ 21 октября 2019

У меня проблема с функцией openssl_encrypt.

Почему в aes-128-cbc функция возвращает 32-байтовую строку с 16-байтовой строкой в ​​качестве ввода?

Пример:

$binaryK0 = openssl_encrypt(hex2bin("00000000000000000000000000000000"),"AES-128-CBC", hex2bin("00112233445566778899AABBCCDDEEFF"),OPENSSL_RAW_DATA, hex2bin("00000000000000000000000000000000"));
echo "openssl_encrypt length:".strlen($binaryK0).'<br>';
$binaryK0 = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, hex2bin("00112233445566778899AABBCCDDEEFF"), hex2bin("00000000000000000000000000000000"), MCRYPT_MODE_CBC, hex2bin("00000000000000000000000000000000"));
echo "mcrypt_encrypt length:".strlen($binaryK0).'<br>';

Результат: openssl_encrypt длина: 32 mcrypt_encrypt длина: 16

1 Ответ

0 голосов
/ 21 октября 2019

Спасибо, Topaco.

С вашим комментарием мы исследуем исходный код php openssl. Мы находим опцию «OPENSSL_NO_PADDING», и теперь она работает нормально.

$binaryK0 = openssl_encrypt(hex2bin("00000000000000000000000000000000"),"AES-128-CBC", hex2bin("00112233445566778899AABBCCDDEEFF"),**OPENSSL_NO_PADDING**, hex2bin("00000000000000000000000000000000"));
...