繁体   English   中英

用openssl代替mcrypt在PHP中解密AES-256-CFB

[英]Decrypt AES-256-CFB in PHP with openssl instead mcrypt

以下功能可正确解密php5中的数据

function decrypt_mcrypt($key, $str) {
  $str = base64_decode($str);
  $iv = substr($str, 0, 16);
  $str = substr($str, 16);
  return mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $str, MCRYPT_MODE_CFB, $iv);
}

我试图使用openssl而不是mcrypt(在php7中),但是在输出中出现了垃圾。

function decrypt_openssl($key, $str) {
  $str = base64_decode($str);
  $iv = substr($str, 0, 16);
  $str = substr($str, 16);
  return openssl_decrypt($str, 'AES-256-CFB', $key, OPENSSL_RAW_DATA, $iv);
}

可能是什么问题呢?

openssl_decrypt使用PKCS#5填充,其中mcrypt消息填充为零。

根据文档使用openssl_decrypt时,请尝试使用OPENSSL_ZERO_PADDING选项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM