php – 如何使用以前使用mcrypt加密的OpenSSL解密字符串?
作者:互联网
由于mcrypt在PHP 7.1中已被弃用,并且我在现有项目中使用mcrypt加密/解密了大量数据,如何将我的PHP代码从mcrypt迁移到OpenSSL?我有以下代码加密:
$encoded = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, 'salt', 'source string', MCRYPT_MODE_ECB));
而解密代码是:
$source = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, 'salt', base64_decode('encoded string'), MCRYPT_MODE_ECB);
我应该在上面的例子中使用哪些openssl_函数来获得没有编码数据转换的相同结果?
或者唯一的方法是运行一个脚本,用mcrypt解密我存储的所有加密数据并用openssl编码?
谢谢
解决方法:
OpenSSL没有Rijndael-256密码;没有等价物 – 你必须解密并重新加密所有东西.
但是也:
>您缺少填充和身份验证.
>不要使用ECB模式.
>“salt”不是正确的加密密钥,也不是任何常规字符串.使用random_bytes()生成密钥,使用所选算法的正确密钥长度.
所有上述内容都可以这样总结:不要自己动手,使用像defuse/php-encryption这样经过良好审查的库.
密码学并不简单,仅用5行代码就无法正常完成.
标签:php,mcrypt,php-openssl 来源: https://codeday.me/bug/20190623/1266025.html