zoukankan      html  css  js  c++  java
  • PHP 识别 java 8位 des 加密和 解密方式

    代码及使用说明:

    <?php
    /**
    *PHP 识别 java 8位密钥的加密和解密方式
    *@desc 加密方式 通用
    */
    class DES {
        var $key;
        var $iv; //偏移量
    
    
        function DES($key) {
            //key长度8例如:1234abcd
            $this->key = $key;
        }
        //加密方式
        function encrypt($str) {
            $str = $this->pkcs5_pad($str);
            $encode = mcrypt_encrypt(MCRYPT_DES, $this->key, $str, MCRYPT_MODE_ECB);
            return bin2hex($encode);
        }
        //解密方式
        function decrypt($str) {
            $str = $this->hex2bin($str);
            $str = mcrypt_decrypt(MCRYPT_DES, $this->key, $str, MCRYPT_MODE_ECB);
            return $str;
        }
        //十六进制数据转换成二进制数据流
        function hex2bin($data) {
            $len = strlen($data);
            for($i=0;$i<$len;$i+=2) {
                $newdata .= pack("C",hexdec(substr($data,$i,2)));
            }
            return $newdata;
        }
    
        function pkcs5_unpad($text)
        {
            $pad = ord($text{strlen($text)-1});
            if ($pad > strlen($text)) return $text;
            if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) return $text;
            return substr($text, 0, -1 * $pad);
        }
        //补位
        function pkcs5_pad($text)
        {
            $len = strlen($text);
            $mod = $len % 8;
            $pad = 8 - $mod;
            return $text.str_repeat(chr($pad),$pad);
        }
    
    }
    ?>

    使用方式:

    $key ='' 密钥
    $data = '123456'; 加密的字符串
    $Des = new Des($key);
    $encode = $Des->encrypt($data);//加密
    $decode = $Des->decrypt($encode);//解密
    echo $encode."<br/>";
    echo $decode."<br/>";
  • 相关阅读:
    Vue.js+express建站
    单页应用(SPA)简介
    Z形记之CentOS7
    Z形记之比较两个目录下文件异同
    Z形记之Linux的那些事:安装Nginx
    SQL之修改字段类型
    Scrapy系列之爬取豆瓣电影
    Scrapy和MongoDB的应用---爬取
    BigDecimal类的常用算法
    回到顶部功能
  • 原文地址:https://www.cnblogs.com/guangxiaoluo/p/3337022.html
Copyright © 2011-2022 走看看