标签:php mcrypt php-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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。