您现在的位置是:网站首页>>PHP>>php

php DES的加密和解密

发布时间:2018-09-05 16:56:26作者:wangjian浏览量:653点赞量:0

    我使用的是Yii框架 可根据不同的框架进行变换

    编写一个des的加密解密组件

    <?php
    /**
     * Created by PhpStorm.
     * User: wj
     * Date: 2018/09/05
     * Time: 16:50
     */
    namespace app\components;
    /**
    +------------------------------------------------------------------------------
     * DES 加密解密类
    +------------------------------------------------------------------------------
     */
    class DesComponents
    {
        public $desKey;
        public function __construct()
        {
            $this->desKey = '12345678';
        }
        //DES 加密
        public function  des($encrypt) {
            $iv = mcrypt_create_iv ( mcrypt_get_iv_size ( MCRYPT_DES, MCRYPT_MODE_ECB ), MCRYPT_RAND );
            $passcrypt = mcrypt_encrypt ( MCRYPT_DES, $this->desKey, $encrypt, MCRYPT_MODE_ECB, $iv );
            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) {
            $iv = mcrypt_create_iv ( mcrypt_get_iv_size ( MCRYPT_DES, MCRYPT_MODE_ECB ), MCRYPT_RAND );
            $decrypted = mcrypt_decrypt ( MCRYPT_DES, $this->desKey, $decrypt, MCRYPT_MODE_ECB, $iv );
            return $decrypted;
        }
    }


    使用des加密解密组件

    <?php
    /**
     * Created by PhpStorm.
     * User: wj
     * Date: 2018/09/05
     * Time: 16:05
     * des加密解密
     */
    namespace app\controllers;
    use app\components\DesComponents;
    use yii\web\Controller;
    class DesController extends Controller
    {
        public $desKey = '12345678';
        public function actionIndex()
        {
            $str = '123456';
            //加密
            $des = new DesComponents();
            $value = $des->des($str);
            $value = $des->asc2hex($value);
            var_dump($value);
            echo '<br/>';
            //解密
            $value = $des->hex2asc($value);
            $value = $des->un_des($value);
            $value = trim($value);
            var_dump($value);
        }
    }

    现象:

    image.png



0 +1