小编Wil*_*ano的帖子

用openssl_encrypt替换mcrypt_encrypt

你们可能知道,扩展名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));
Run Code Online (Sandbox Code Playgroud)

我试图使用此代码将此段代码移植到openssl_encrypt

$key = md5('sA*(DH');
$iv = md5($key);
echo base64_encode(openssl_encrypt($data, "aes-256-cbc", $key, OPENSSL_RAW_DATA, $iv));
Run Code Online (Sandbox Code Playgroud)

但我有两个问题:

  1. IV长度应该是16个字符(md5给我32个),所以我得到一个PHP警告
  2. 它的输出不一样(即使我截断为16个字符)

任何人都有类似的问题(或知道如何解决它?)

顺便说一句:我正在使用PHP的开发大师版本(假设是7.1.0 alpha 3).

php mcrypt php-openssl

7
推荐指数
1
解决办法
6936
查看次数

标签 统计

mcrypt ×1

php ×1

php-openssl ×1