技术篇 >>

php7.2 des-ede3-ecb加密报错:openssl_encrypt():Unknown cipher algorithm

最近做项目时用到了3des加密算法,由于环境版本是php7.2 只能用openssl_encrypt()来加密:


 /* php 版本大于7.2  3des ecb模式加密*/
 $res    = openssl_encrypt($value, 'des-ede3-ecb', $this->key, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING);
 return $res;


问题:

以上加密写法在测试环境正常,确认openssl扩展已打开,但是在上正式环境时报错:openssl_encrypt():Unknown cipher algorithm。

FB3FC573-1307-4308-91BD-427F2CA9B585.jpg


最终解决方法

/* 将'des-ede3-ecb' 改为 'des-ede3' */ 
$res    = openssl_encrypt($value, 'des-ede3', $this->key, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING);
return $res;


原因分析:(个人分析) php里并不支持 "des-ede3-ecb" 这种模式,所以报错,应该为为:"des-ede3"。


补充推荐:

要实现极强的兼容效果,不太注重速度的情况下 建议安装使用 phpseclib:

composer require phpseclib/phpseclib:~2.0


 


评论