申请微信退款,回调函数上成获取信息,但是解密一直不成功,用的就是网上找的的代码
/**
* 对解密后的明文进行补位删除
*
* @param string $text 解密后的明文
* @return string
*
*/
private function pkcs7Unpad($text) {
$pad = ord(substr($text, -1));
if ($pad < 1 || $pad > 32) {
$pad = 0;
}
return substr($text, 0, (strlen($text) - $pad));
}
/**
* 对密文进行解密
*
* @param string $encrypted 需要解密的密文
* @return string 解密得到的明文
*/
public function decrypt($encrypted) {
$iv = substr($this->_key, 0, 16);
$decrypted = openssl_decrypt($encrypted, 'AES-256-CBC', $this->_key, OPENSSL_ZERO_PADDING, $iv);
//去除补位字符
$result = $this->pkcs7Unpad($decrypted);
//去除16位随机字符串 加密时添加16为随机字符串
if (strlen($result) < 16) {
return "";
}
$content = substr($result, 16, strlen($result));
$lenList = unpack("N", substr($content, 0, 4));
$contentLen = $lenList[1];
return substr($content, 4, $contentLen);
}
1 回答4.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
4 回答1.7k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答1.4k 阅读✓ 已解决
2 回答1.9k 阅读
是AES,用openssl库,别用mcrypt