服务器之家

服务器之家 > 正文

php中3des加密代码(完全与.net中的兼容)

时间:2020-01-06 15:58     来源/作者:php教程网

代码如下:


<?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); 


?> 

标签:

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
配置IIS网站web服务器的安全策略配置解决方案
配置IIS网站web服务器的安全策略配置解决方案 2019-05-23
Nginx服务器究竟是怎么执行PHP项目
Nginx服务器究竟是怎么执行PHP项目 2019-05-24
返回顶部