3DES加密兼容JAVA和PHP

class Crypt3Des {
//初始化
function Crypt3Des($key,$iv) {
$this->key = $key;
$this->iv = $iv;
}

//数据加密
function encrypt($input){
$size = mcrypt_get_block_size(‘tripledes’, ‘cbc’);
$input = $this->pkcs5_pad($input, $size);

$key = $this->key;
$iv = $this->iv;
$td = mcrypt_module_open(MCRYPT_3DES, ”, MCRYPT_MODE_CBC, ”);

@mcrypt_generic_init($td, $key, $iv);
$data = mcrypt_generic($td, $input);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
$data = base64_encode($data);

return $data;
}

//数据解密
function decrypt($encrypted){
$encrypted = base64_decode($encrypted);
$key = $this->key;
$td = mcrypt_module_open(MCRYPT_3DES,”,MCRYPT_MODE_CBC,”);
$iv = $this->iv;

@mcrypt_generic_init($td, $key, $iv);
$decrypted = mdecrypt_generic($td, $encrypted);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
$y=$this->pkcs5_unpad($decrypted);

return $y;
}

function pkcs5_pad ($text, $blocksize) {
$pad = $blocksize – (strlen($text) % $blocksize);
return $text . str_repeat(chr($pad), $pad);
}

function pkcs5_unpad($text){
$pad = ord($text{strlen($text)-1});
if ($pad > strlen($text)) {
return false;
}
if (strspn($text, chr($pad), strlen($text) – $pad) != $pad){
return false;
}
return substr($text, 0, -1 * $pad);
}
}

$key = “jxquJS”;

//如果JAVA的向量为newbyte[]{1,2,3,4,5,6,7,8}
//那么在PHP中就是:0102030405060708
//然后再用PACK函数转化一下,如下:
$iv = pack(‘H*’,’0000000000000000′);

//初始化一个对象
$rep=new Crypt3Des($key, $iv);
$time = date(‘Y-m-d H:i:s’, time()+3600*8);
$input=”{‘time’:'”.$time.”‘,’userId’:’2c3f7c06-2dd4-4fe5-b34c-2fcab0db6cc2′}”;

echo “原文:”.$input.”
“;

$encrypt_card=$rep->encrypt($input);
echo “加密:”.$encrypt_card.”
“;

$url = “http://***work.do?sysId=sys012&params=”;
$url .= urlencode($encrypt_card);
echo “url:”.$url;
echo ”
“;

$str = file_get_contents($url);
echo “返回数据:”.$str;
echo ”
“;

echo “解密:”.$rep->decrypt($str);

郑重声明:

1 本资源来源于互联网,资源的版权归资源原作者所持有,受《中华人民共和国著作权法》等相关法律保护。

2 由于无法和原作者取得联系,所以上传的部分资源无法先通过原作者的同意就分享给大家了,如本资源侵犯了您(原作者)的权益,请联系我们(微信号 xiaohaimei1989),我们会立马删除您的资源,并向您表达诚挚的歉意!

3 本站是一个公益型网站,分享资源的目的在于传播知识,分享知识,收取一点点打赏的辛苦费是用于网站的日常运营开支,并非用于商业用途。

4 本站资源只提供学习和参考研究使用,使用过后请在第一时间内删除。本站不承担资源被单位或个人商用带来的法律责任。

发表评论