欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

php 3des解密

程序员文章站 2024-03-14 13:38:28
...
class DesCrypt{

var $key = 'kuaipay_des';
var $deviceid = '';
var $user = '';
var $lsh = '';
var $cipherText = '';
var $HcipherText = '';
var $decrypted_data ='';
function DesCrypt(){

}
//加密
function en($str)
{
$cipher = mcrypt_module_open(MCRYPT_3DES, '', MCRYPT_MODE_ECB, '');
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_3DES,MCRYPT_MODE_ECB), MCRYPT_RAND);
if (mcrypt_generic_init($cipher, substr($this->key,0,8), $iv) != -1)
{
$this->cipherText = mcrypt_generic($cipher,$this->pad($this->padding($str)));
mcrypt_generic_deinit($cipher);
// 以十六进制字符显示加密后的字符
$this->HcipherText=bin2hex($this->cipherText);
}
mcrypt_module_close($cipher);
return $this->HcipherText;
}
//解密
function de($str)
{
$str = pack('H*', $str);
$cipher = mcrypt_module_open(MCRYPT_3DES, '', MCRYPT_MODE_ECB, '');
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_3DES,MCRYPT_MODE_ECB), MCRYPT_RAND);
if (mcrypt_generic_init($cipher, substr($this->key,0,8), $iv) != -1)
{
$this->decrypted_data = mdecrypt_generic($cipher,$str);
mcrypt_generic_deinit($cipher);
}
mcrypt_module_close($cipher);
return $this->unpad($this->decrypted_data);
}
private function pad ($data)
{
$data = str_replace("\n","",$data);
$data = str_replace("\t","",$data);
$data = str_replace("\r","",$data);
return $data;
}
private function 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);
}
//填充密码,填充至8的倍数
private function padding( $str )
{
$len = 8 - strlen( $str ) % 8;
for ( $i = 0; $i < $len; $i++ )
{
$str .= 0;
}
return $str ;
}
};
相关标签: PHP