CryptoJS的TripleDES加密采用php实现

javascript的CryptoJS TripleDES加密算法,利用Php的mcrypt_decrypt也可以实现。搜索了很久,终于找到可用方法,防止忘记,特记录一下。具体代码如下:

js代码:

//加密
function TripleDESByEBCEncrypt(data, key)
{
  var secret = CryptoJS.enc.Utf8.parse(key);// 秘钥
  var encode_str = CryptoJS.TripleDES.encrypt(data,secret,
  { 
    mode: CryptoJS.mode.ECB, 
    padding: CryptoJS.pad.Pkcs7 
  }).toString();
  return encode_str;
}

对应的PHP等价代码:

//加密
function TripleDESByEBCEncrypt($data, $key)
{
  //Pad for PKCS7
  $blockSize = mcrypt_get_block_size('tripledes', 'ecb');
  $len = strlen($data);
  $pad = $blockSize - ($len % $blockSize);
  $data .= str_repeat(chr($pad), $pad);
  //Encrypt data
  $encData = mcrypt_encrypt('tripledes', $key, $data, 'ecb');
  return base64_encode($encData);
}
//echo TripleDESByEBCEncrypt("data", "f9b08f4246f4981a7964eb74");

//解密
function TripleDESByEBCDecrypt($data, $key)
{
  $decData = mcrypt_decrypt('tripledes', $key, base64_decode($data), 'ecb');
  $decData=trim($decData); 
  $dec_s = strlen($decData);
  $padding = ord($decData[$dec_s-1]);
  $decData = substr($decData, 0, -$padding);
  return $decData;
}
//echo TripleDESByEBCDecrypt("RvZ5zOWsnQY=", "f9b08f4246f4981a7964eb74");

补充说明

  • js中,CryptoJS.enc.Utf8.parse对原始字符的处理,PHP无需理会,直接使用原始字符
  • js中,CryptoJS.enc.Hex.parse对字符的处理,PHP则需要对原始字符进行pack('H*',$hex_str)处理
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值