实现PHP和JavaScript的TripleDES加密解密(二)
介绍
接着上一章开始讲,上章讲了TripleDES的大致原理以及在JS中的使用方法。因此这章节讲下PHP里去实现TripleDES。
PHP 里实现TripleDES加密解密
function encryptBodyTP($data,$vk,$iv)
{
//Pad for PKCS7
$blockSize = mcrypt_get_block_size('tripledes', 'cbc');
$len = strlen($data);
var_dump($len);
$pad = $blockSize - ($len % $blockSize);
var_dump($pad);
$data .= str_repeat(chr($pad), $pad);
$key = $vk;
//Encrypt data
$encData = mcrypt_encrypt('tripledes', $key, $data, 'cbc',$iv);
return base64_encode($encData);
}
上面的代码实现了在PHP下使用cbc工作模式、PKCS7Padding补位模式的加密算法。 而有一点需要注意的是要实现以上加密是需要下载一个php拓展.
mcrypt拓展。该拓展下载时会有些注意的地方:
- php version < 7.3(不包括7.3)请下载1.0.1版本
- php version >= 7.3 请下载1.0.2版本
- 下载完成后需要手动在php.ini里引入一下,如果你使用的是apache的话还需要在apache2里的php.ini里引入
总结
准确来说在PHP里实现TripleDES加密不算特别难,就是百度上的许多资料比较老,因此才会产生一系列问题。当然这个加密的过程中还会有一些因为业务而产生的坑,这块下节再讲。