【发布时间】:2016-11-16 11:35:49
【问题描述】:
你们可能知道,扩展 mcrypt 将在 php 7.1 上被弃用。
我用来维护一个“遗留”应用程序,我希望最终迁移到这个版本,所以我运行了测试并验证我无法再获得 100% 的覆盖率,因为有一段代码使用以下内容代码:
$key = 'sA*(DH';
// initialization vector
$iv = md5(md5($key));
$output = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, $iv));
我尝试使用此代码将这段代码移植到 openssl_encrypt
$key = md5('sA*(DH');
$iv = md5($key);
echo base64_encode(openssl_encrypt($data, "aes-256-cbc", $key, OPENSSL_RAW_DATA, $iv));
但是我有两个问题:
- IV 长度应该是 16 个字符(md5 给了我 32 个字符),所以我收到了 PHP 警告
- 输出不一样(即使我截断为 16 个字符)
有人遇到过类似的问题(或知道如何解决吗?)
顺便说一句:我正在使用 PHP 的 dev master 版本(应该是 7.1.0 alpha 3)。
【问题讨论】:
标签: php mcrypt php-openssl