今天对接了一个平台的接口,拿到文档后猛吸了一口气,接口平台使用JAVA写的,用到了3DES加密方式。写了几种PHP的3DES加密都不行,最后想到了openssl_encrypt ,一步成功。现在分享出来,希望看到的人少踩点坑。
private function pkcs5Pad($text)
{
$pad = 8 - (strlen($text) % 8);
return $text . str_repeat(chr($pad), $pad);
private function pkcs5Pad($text)
{
$pad = 8 - (strlen($text) % 8);
return $text . str_repeat(chr($pad), $pad);
}
调用:
$str = $this->pkcs5Pad($str);
if(strlen($str) % 8){
$str = str_pad($str,strlen($str) + 8 - strlen($str) % 8,"\0");
}
$sign = base64_encode(openssl_encrypt($str,'DES-EDE3',$key,OPENSSL_RAW_DATA|OPENSSL_NO_PADDING,''));
if做一下判断。
$key,是平台给的秘钥。
pkcs5Pad是函数。