以前咱们已经学习过了PHP实现DES加密解密 https://www.wj0511.com/site/detail.html?id=89php
可是发现我在实现PHP实现DES加密解密时出现以下错误html
Call to undefined function mcrypt_create_iv()
以后发现这是因为咱们PHP版本缘由,个人php版本是php7.2,若是我把个人php版本切换到php7.0就一切正常了,这是因为函数 mcrypt_get_iv_size 在只在(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0) 这几个版本中有效,因此若是咱们的php版本为php7.2的话,咱们就须要使用openssl_encrypt函数来实现DES加密解密php7
1:建立一个DES加密解密组件app
<?php /** * author: wangjian * date: 2019/12/11 */ namespace app\components; class DesComponents { public $desKey; public function __construct() { $this->desKey = '12345678'; } //DES 加密 public function des($encrypt) { $passcrypt = openssl_encrypt($encrypt, 'DES-ECB', $this->desKey, OPENSSL_RAW_DATA); return $passcrypt; } /** * 将二进制数据转换成十六进制 */ public function asc2hex($temp) { return bin2hex ( $temp ); } /** * 十六进制转换成二进制 * * @param string * @return string */ public function hex2asc($temp) { $len = strlen ( $temp ); $data = ''; for($i = 0; $i < $len; $i += 2) $data .= chr ( hexdec ( substr ( $temp, $i, 2 ) ) ); return $data; } //DES解密 public function un_des($decrypt) { $cipher = openssl_decrypt(($decrypt), 'DES-ECB', $this->desKey, OPENSSL_RAW_DATA); $cipher = trim($cipher); return $cipher; } }
2:使用des加密解密函数
$message = '123456';//须要加密的数据 //加密 $des = new DesComponents(); $value = $des->des($message); $value = $des->asc2hex($value); var_dump($value); echo '<br/>'; //解密 $value = $des->hex2asc($value); $value = $des->un_des($value); $value = trim($value); var_dump($value);
上述的方法适合任何版本的php版本学习