PHP7 OpenSSL DES-EDE-CBC加解密

互联网 20-1-8
1. 条件约束

之前PHP5上常使用的mcrypt库在PHP7.1+上已经被移除,故我们采用openssl对数据进行加解密。

加密方式采用DES-EDE-CBC方式。

密钥填充方式为:采用24位密钥,先将key进行MD5校验取值,得出16位字串,再取key MD5校验值前8位追加到先前的取值后面。由此组装出24位的密钥。

2. 代码分享

<?php class DesEdeCbc { private $cipher, $key, $iv; /**  * DesEdeCbc constructor.  * @param $cipher  * @param $key  * @param $iv  */ public function __construct($cipher, $key, $iv) { $this->cipher = $cipher; $this->key= $this->getFormatKey($key); $this->iv = $iv; } /**  * @func  加密  * @param $msg  * @return string  */ public function encrypt($msg) { $des = @openssl_encrypt($msg, $this->cipher, $this->key, OPENSSL_RAW_DATA, $this->iv); return base64_encode($des); } /**  * @func  解密  * @param $msg  * @return string  */ public function decrypt($msg) { return @openssl_decrypt(base64_decode($msg), $this->cipher, $this->key, OPENSSL_RAW_DATA, $this->iv); } /**  * @func  生成24位长度的key  * @param $skey  * @return bool|string  */ private function getFormatKey($skey) { $md5Value= md5($skey); $md5ValueLen = strlen($md5Value); $key = $md5Value . substr($md5Value, 0, $md5ValueLen / 2); return hex2bin($key); } } $cipher = 'DES-EDE-CBC'; $msg = 'HelloWorld'; $key = '12345678'; $iv  = "\x00\x00\x00\x00\x00\x00\x00\x00"; $des = new DesEdeCbc($cipher, $key, $iv); // 加密 $msg = $des->encrypt($msg); echo '加密后: ' . $msg . PHP_EOL; // 解密 $src = $des->decrypt($msg); echo '解密后: ' . $src . PHP_EOL;

3. 一点说明

可以根据实际情况调整加密方式、key的填充方式、及iv向量来满足不同的需求。

更多相关PHP7文章请访问:《PHP7》教程

以上就是PHP7 OpenSSL DES-EDE-CBC加解密的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: PHP7
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:最常用的PHP版本:PHP 7.3取代7.2

相关资讯