xiaohai.cf index.php,php des 加密 - 北京破小孩

/**

*@param  DES/3DES加密解密

*@param  如果是3des,将MCRYPT_DES修改为MCRYPT_3DES,个人笔记

*/

class DesCrypt{

var $key   = 'mykeycode';

var $deviceid   = '';

var $user   = '';

var $lsh   = '';

var $cipherText = '';

var $HcipherText = '';

var $decrypted_data ='';

function DesCrypt(){}

//加密

function en($str) {

$cipher = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_ECB, '');

$iv     = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_DES,MCRYPT_MODE_ECB), MCRYPT_RAND);

if (mcrypt_generic_init($cipher, substr($this->key,0,8), $iv) != -1){

$this->cipherText = mcrypt_generic($cipher,$this->pad($str));

mcrypt_generic_deinit($cipher);

// 以十六进制字符显示加密后的字符

$this->HcipherText=bin2hex($this->cipherText);

//printf("

3DES encrypted:\n%s

",$this->cipherText);

//printf("

3DES HexEncrypted:\n%s

",$this->HcipherText);

}

mcrypt_module_close($cipher);

//return $this->cipherText;

return strtoupper($this->HcipherText);

}

//解密

function de($str)

{

$str    = pack('H*', $str);

$cipher = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_ECB, '');

$iv     = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_DES,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);

}

};

$str = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';

$des = new DesCrypt();

$sDES = $des->en($str);

echo $sDES;

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值