手机
当前位置:查字典教程网 >编程开发 >php教程 >php中3des加密代码(完全与.net中的兼容)
php中3des加密代码(完全与.net中的兼容)
摘要:复制代码代码如下:

复制代码 代码如下:

<?php

class Crypt3Des

{

private $key = "";

private $iv = "";

/**

* 构造,传递二个已经进行base64_encode的KEY与IV

*

* @param string $key

* @param string $iv

*/

function __construct ($key, $iv)

{

if (empty($key) || empty($iv)) {

echo 'key and iv is not valid';

exit();

}

$this->key = $key;

$this->iv = $iv;

}

/**

*加密

* @param <type> $value

* @return <type>

*/

public function encrypt ($value)

{

$td = mcrypt_module_open(MCRYPT_3DES, '', MCRYPT_MODE_CBC, '');

$iv = base64_decode($this->iv);

$value = $this->PaddingPKCS7($value);

$key = base64_decode($this->key);

mcrypt_generic_init($td, $key, $iv);

$ret = base64_encode(mcrypt_generic($td, $value));

mcrypt_generic_deinit($td);

mcrypt_module_close($td);

return $ret;

}

/**

*解密

* @param <type> $value

* @return <type>

*/

public function decrypt ($value)

{

$td = mcrypt_module_open(MCRYPT_3DES, '', MCRYPT_MODE_CBC, '');

$iv = base64_decode($this->iv);

$key = base64_decode($this->key);

mcrypt_generic_init($td, $key, $iv);

$ret = trim(mdecrypt_generic($td, base64_decode($value)));

$ret = $this->UnPaddingPKCS7($ret);

mcrypt_generic_deinit($td);

mcrypt_module_close($td);

return $ret;

}

private function PaddingPKCS7 ($data)

{

$block_size = mcrypt_get_block_size('tripledes', 'cbc');

$padding_char = $block_size - (strlen($data) % $block_size);

$data .= str_repeat(chr($padding_char), $padding_char);

return $data;

}

private function UnPaddingPKCS7 ($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);

}

}

?>

【php中3des加密代码(完全与.net中的兼容)】相关文章:

php动态绑定变量的用法

php环境上传大文件需要注意的事项

php中PDO方式实现数据库的增删改查

域名查询代码公布

php删除指定目录的方法

在php中使用sockets:从新闻组中获取文章

php实现将上传word文件转为html的方法

php快速查找数据库中恶意代码的方法

PHP4在WinXP下IIS和Apache2服务器上的安装实例

php生成随机密码的自定义函数

精品推荐
分类导航