Это мой код:
function decrypt($code)
{
$key = '3552ef55ecdf04324..'; // 64 bytes length
$iv = 'd20818af907b59c3b15d258dd3969770'; // 32 bytes length
$key = hash("sha256", $key,true); // 32 bytes length
$iv = md5($iv,true); // 16 bytes length
echo strlen(base64_decode($code)); // 80 bytes
//return openssl_decrypt(base64_decode($code), 'aes-256-cbc', $key, 0 ,$iv); // return false
$output = openssl_decrypt(base64_decode($code), 'aes-256-cbc', $key, 0 ,$iv);
return openssl_error_string();
}
Я шифрую с помощью swift/android и расшифровываю с помощью php.
Метод openssl_error_string() возвращает «ошибка: 0606506D: процедуры цифрового конверта: EVP_DecryptFinal_ex: неправильная длина конечного блока».
Обратите внимание, что ключ и iv в шифровании swift/android одинаковы. Я не могу найти проблему здесь. Кто угодно? Спасибо.
base64_decode($code)
), возможно, это не то, что вы думаете. - person zaph   schedule 10.05.2016. R-; 0040 f6 a1 46 5a ec 54 55 54 04 8f 00 60 09 cf af c2 FZTUT ..
.‹/pre› @zaph - person Jad.h94   schedule 11.05.2016$code
в комментарии не является допустимой кодировкой Base64 из-за ее длины, 109 символов, в ней есть невидимый символ. Простой текст состоит из 64 символов и будет дополнен 16 байтами 0x10, что составит 80 байтов. - person zaph   schedule 11.05.2016