要跟java 作接口交互
对方传过来参数是用 des加密的, php 没有直接des的函数, 网上找了几个好像也不怎么好用,请教高手,有知道的马?
对方传过来参数是用 des加密的, php 没有直接des的函数, 网上找了几个好像也不怎么好用,请教高手,有知道的马?
解决方案 »
- 开发的疑惑?大侠请留步。
- 属于什么类型?应该用什么函数进行过滤、
- php扩展中c++单例模式的全局对象实例被生成多个子进程销毁,为啥??
- 新人在此参上。Edit Entry
- IIS6.0设置默认页面为html出现的问题
- 什么叫PHP高级工程师?
- phplib里怎么得到模板被替换后的全部内容
- 提供PHP+MYSQL空间,数量有限,快来。。。
- 被Zend编译过的PHP,有什么工具可以反编译吗?哪位老大可以帮一下,谢谢了
- 利用JoomFish进行多语言网站设计,需要什么前期工作。求大神指点
- 抓取网页信息图片不能正常显示
- 很迷惑的问题,网页显示瘫痪了一样,但是将源码以htm文件名保存后显示正常,在IE中瘫痪了不能居中
2楼高手 是否可讲清楚点我是想解密 java里加密过来的des的密文, 唉, 郁闷啊
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;
cbc ecb?
MCRYPT_MODE_CBC (cipher block chaining) is especially suitable for encrypting files where the security is increased over ECB significantly.
MCRYPT_MODE_CFB (cipher feedback) is the best mode for encrypting byte streams where single bytes must be encrypted.
MCRYPT_MODE_OFB (output feedback, in 8bit) is comparable to CFB, but can be used in applications where error propagation cannot be tolerated. It's insecure (because it operates in 8bit mode) so it is not recommended to use it.
MCRYPT_MODE_NOFB (output feedback, in nbit) is comparable to OFB, but more secure because it operates on the block size of the algorithm.
MCRYPT_MODE_STREAM is an extra mode to include some stream algorithms like WAKE or RC4.
结果如下:$input="JAVADES123";
$key = "12345678";
PHP des 密文:eBNDnJT8cWfd922muAxfLw==
java des密文: lAyrJ7vmnKcjrdKga+BilA==不知为什么 ?
而且直接那 java 的密文" lAyrJ7vmnKcjrdKga+BilA== " 来解密 ,解出来也是乱码