php中des算法怎么处理 要跟java 作接口交互对方传过来参数是用 des加密的, php 没有直接des的函数, 网上找了几个好像也不怎么好用,请教高手,有知道的马? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 look here:http://www.cnblogs.com/window07/archive/2009/06/20/1507298.html <?phpfunction idtag_des_decode($key,$encrypted){ $encrypted = base64_decode($encrypted); $td = mcrypt_module_open(MCRYPT_DES,'',MCRYPT_MODE_CBC,''); //使用MCRYPT_DES算法,cbc模式 $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND); $ks = mcrypt_enc_get_key_size($td); mcrypt_generic_init($td, $key, $key); //初始处理 $decrypted = mdecrypt_generic($td, $encrypted); //解密 mcrypt_generic_deinit($td); //结束 mcrypt_module_close($td); $y=pkcs5_unpad($decrypted); return $y;}function idtag_des_encode($key,$text){ $y=pkcs5_pad($text); $td = mcrypt_module_open(MCRYPT_DES,'',MCRYPT_MODE_CBC,''); //使用MCRYPT_DES算法,cbc模式 /// $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND); $ks = mcrypt_enc_get_key_size($td); mcrypt_generic_init($td, $key, $key); //初始处理 $encrypted = mcrypt_generic($td, $y); //解密 mcrypt_generic_deinit($td); //结束 mcrypt_module_close($td); return base64_encode($encrypted);}function pkcs5_pad($text,$block=8){ $pad = $block - (strlen($text) % $block); return $text . str_repeat(chr($pad), $pad);}function pkcs5_unpad($text){ $pad = ord($text{strlen($text)-1}); if ($pad > strlen($text)) return $text; if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) return $text; return substr($text, 0, -1 * $pad);}$key = 'ABCD1234';$str = 'JAVA DES 123';$encstr = idtag_des_encode($key,$str);//$tmp = "BJ1g7SNWtIAcmlrdN+Ftaw==";$ys=idtag_des_decode($key,$encstr);echo $ys;?> 有des你要安装mcrypt扩展mcrypt_decrypt如果密码长度小于8个字节是DES,如果密码8-16字节,则是3des,不过第一个和第三个密钥相同。如果密码长度16-24则三次加密的密钥都不同。如果>24,只取前24。由于密钥都是8字节的,如果你的密钥是10字节,那们是第二种情况,第一个,第三个密钥相同。总长不够16字节,用'\0'.补足。 问个关于ECSHOP里模板的一些问题? 请教一个织梦CMS问题,关于两种类别的频道怎样建立 东方网是不是用PHP写的 复选框的删除如何操作,谁知道。。。。。 PHP没几天就无法访问,需要重启服务 有关php调用lucene(JAVA)代码的问题 一个关于view的问题 在PHP中,怎样生成全球唯一识别号? 织梦 php混淆加密-希望大家帮我解密下 寻WEB开发高手一起做流媒体视频站 php 获取mac地址
<?php
function idtag_des_decode($key,$encrypted)
{
$encrypted = base64_decode($encrypted); $td = mcrypt_module_open(MCRYPT_DES,'',MCRYPT_MODE_CBC,''); //使用MCRYPT_DES算法,cbc模式
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
$ks = mcrypt_enc_get_key_size($td);
mcrypt_generic_init($td, $key, $key); //初始处理 $decrypted = mdecrypt_generic($td, $encrypted); //解密 mcrypt_generic_deinit($td); //结束
mcrypt_module_close($td); $y=pkcs5_unpad($decrypted);
return $y;
}function idtag_des_encode($key,$text)
{ $y=pkcs5_pad($text); $td = mcrypt_module_open(MCRYPT_DES,'',MCRYPT_MODE_CBC,''); //使用MCRYPT_DES算法,cbc模式
/// $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
$ks = mcrypt_enc_get_key_size($td);
mcrypt_generic_init($td, $key, $key); //初始处理
$encrypted = mcrypt_generic($td, $y); //解密
mcrypt_generic_deinit($td); //结束
mcrypt_module_close($td); return base64_encode($encrypted);
}function pkcs5_pad($text,$block=8)
{
$pad = $block - (strlen($text) % $block);
return $text . str_repeat(chr($pad), $pad);
}
function pkcs5_unpad($text)
{
$pad = ord($text{strlen($text)-1});
if ($pad > strlen($text)) return $text;
if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) return $text;
return substr($text, 0, -1 * $pad);
}$key = 'ABCD1234';
$str = 'JAVA DES 123';
$encstr = idtag_des_encode($key,$str);//$tmp = "BJ1g7SNWtIAcmlrdN+Ftaw==";
$ys=idtag_des_decode($key,$encstr);
echo $ys;
?>
你要安装mcrypt扩展mcrypt_decrypt如果密码长度小于8个字节是DES,如果密码8-16字节,则是3des,不过第一个和第三个密钥相同。
如果密码长度16-24则三次加密的密钥都不同。如果>24,只取前24。由于密钥都是8字节的,如果你的密钥是10字节,那们是第二种情况,第一个,第三个密钥相同。总长不够16字节,用'\0'.补足。