编程语言
首页 > 编程语言> > php – 如何使用以前使用mcrypt加密的OpenSSL解密字符串?

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