PHP代码实现DES加密解密算法

大多数语言自身实现了des加密解密函数,而在php里面并没有直接实现的函数,这里我将介绍PHP代码实现DES加密解密算法。

在PHP中实现DES加密解密,需要加载一个外部扩展模块mcrypt模块,默认安装的PHP并没有带该模块,因此我们需要独立安装,在php下直接在php.ini中打开mcrypt模块参数并拷贝mcrypt,而在linux下我们需要下载对应的mcrypt的rpm包,并安装,安装时如需关联其他rpm包的话,则可以对应下载安装。

下面介绍一个我经过调试测试并实现的DES加密解密的PHP函数代码,完美兼容C#和Java的,如有问题,可以联系我说明。

/*DES解密算法*/
function des_decode($crypt)
{
global $key;
global $iv;

$td = mcrypt_module_open(MCRYPT_3DES,'',MCRYPT_MODE_ECB,'');
$iv = base64_decode($iv);
$key = base64_decode($key);
mcrypt_generic_init($td,$key,$iv);
$ret = trim(mdecrypt_generic($td,base64_decode($crypt)));
$ret = UnPaddingPKCS7($ret);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);

retyrb $ret;
}

/*DES加密函数*/
function des_encode($crypt)
{
 global $sx_min;

 $key = "qP70966AcZCQyXR+3P1mfjmqqxdkagom";
 $iv = "FnZ+19kJbQ8=";

 $td = mcrypt_module_open(MCRYPT_3DES,'',MCRYPT_MODE_ECB,'');
 $iv = base64_decode($iv);
 $key = base64_decode($key);
 mcrypt_generic_init($td,$key,$iv);

 $ret = PaddingPKCS7($crypt);
 $ret = mcrypt_generic($td,$ret);
 mcrypt_generic_deinit($td);
 mcrypt_module_close($td);

 $ret = trim(base64_encode($ret));

 return $ret;
}

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;
}

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);
}
文章来源:红心草博客
原文地址:http://www.hongxincao.com/archives/213.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值