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/>";

 

 

posted @ 2013-09-24 15:33  老骆  阅读(824)  评论(0编辑  收藏  举报