Wil*_*ano 7 php mcrypt php-openssl
你们可能知道,扩展名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)
但我有两个问题:
任何人都有类似的问题(或知道如何解决它?)
顺便说一句:我正在使用PHP的开发大师版本(假设是7.1.0 alpha 3).
小智 1
你真的应该改掉使用 md5 的习惯。
$iv = openssl_random_pseudo_bytes(16);
$key = substr(hash('sha256', 'sA*(DH'), 0, 32)
Run Code Online (Sandbox Code Playgroud)
mcrypt_encrypt并且openssl_encrypt在给定相同的明文和密钥的情况下不会输出相同的密文。
另外,mcrypt在 PHP 7.1 中已弃用,未删除...因此您可以更新到 7.1 而无需更改为mcrypt...但一般来说openssl删除是一个好主意。mcrypt
| 归档时间: |
|
| 查看次数: |
6936 次 |
| 最近记录: |