PHP使用3DES加密代码,于JAVA和C#的3DES互通

PHP使用3DES加密代码,于JAVA和C#的3DES互通

因为一个支付接口,使用了PHP的3des加密方式,相对des更强壮,但是刚开始写的时候问题比较多,PHP中3DES加密的结果在JAVA和C#中解密不了,最后研究完了,把代码分享出来。

代码有点乱,自己整理,实用为主!

echo pdex_sign('abc');

function pdex_sign($codestr){
   function pkcs5_pad($text, $blocksize)
    {
        $pad = $blocksize - (strlen($text) % $blocksize);
        return $text . str_repeat(chr($pad), $pad);
    }
    function pkcs5_unpad($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 = "96781E7B8D5A0E8A5CE7A95317394407";    //关键:加密key
    $iv = "wodepianyiliang";                      //关键:偏移量
    $iv = pack("H16", $iv);
    $td = mcrypt_module_open(MCRYPT_3DES, '', MCRYPT_MODE_ECB, '');
    mcrypt_generic_init($td, base64_encode($key), base64_encode($iv));
    $str = base64_encode(mcrypt_generic($td,pkcs5_pad($codestr,8)));
    return $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); 
    return $ttt;
}

abc这个字符串的3DES加密结果为:587/nwuFw9o=

通过第三方网站可以进行解密,做验证

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值