3des java ecb_PHP 3DES加密 与JAVA通用 加密模式:ECB
昨天幫同事解決了一個接口加密的算法,同事是個小姑娘,不懂,所以老大派我協助她,所以我為了不在姑涼面前掉面子~~火速解決它...
甲方是電信,JAVA寫的接口,我一聽頭就大了,大家都知道~~PHP在加密算法上 與JAVA不太一樣,確切的說,PHP 3DES加密的填充方式使用0,而JAVA默認使用PKCS7填充,對方用的是PKCS5。
廢話不多說了,上代碼吧。
對方使用3DES,加密模式:ecb,填充方法:PKCS5
/**
*
* 加密函數
* 算法:des
* 加密模式:ecb
* 補齊方法:PKCS5
*
* @author 1336707969@qq.com
*/
function pkcs5_padding($text, $blocksize)
{
$pad = $blocksize - (strlen($text) % $blocksize);
return $text . str_repeat(chr($pad), $pad);
}
function pkcs5_unpadding($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);
}
$key = "*****";? //這里說一下,對方使用24位密鑰,如果要求36位,需要pack處理一下
$str = "abcdefg";
echo "明文為:".$str."
";
//加密方法
$m = MCRYPT_TRIPLEDES;
$iv = mcrypt_create_iv(mcrypt_get_iv_size($m,MCRYPT_MODE_ECB), MCRYPT_RAND);
$td = mcrypt_module_open(MCRYPT_3DES, '', MCRYPT_MODE_ECB, '');
mcrypt_generic_init($td, $key, $iv);
$str = base64_encode(mcrypt_generic($td,pkcs5_padding($str,8)));
echo "PHP加密后的密文為:".$str ."
";
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
$td = mcrypt_module_open(MCRYPT_3DES, '', MCRYPT_MODE_ECB, '');
mcrypt_generic_init($td, $key, $iv);
$ttt? = pkcs5_unpad(mdecrypt_generic($td, base64_decode($str)));
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
echo "解密后的明文為:".$ttt . "
";
echo "
";
?>
總結
以上是生活随笔為你收集整理的3des java ecb_PHP 3DES加密 与JAVA通用 加密模式:ECB的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java集合使用_java集合使用初步
- 下一篇: java mina长连接短连接_MINA