【发布时间】:2017-09-14 22:08:12
【问题描述】:
我需要加密一些 SOAP 标头字段,我目前在 PHP 5.6 版本的项目中使用以下代码。
function getBaseEncoded($data, $key)
{
$size = $this->pkcs5_pad($data, mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB));
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB), MCRYPT_RAND);
$result = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $size, MCRYPT_MODE_ECB, $iv);
return trim(base64_encode($result));
}
private function pkcs5_pad($text, $blocksize)
{
$pad = $blocksize - (strlen($text) % $blocksize);
return $text . str_repeat (chr($pad), $pad);
}
现在我手上有一个类似的项目,但使用的是 PHP 7,并且不推荐使用 MCRYPT 函数,我需要将其切换为 OPENSSL_ENCRYPT。
下面的代码是我的第一次尝试:
function getBaseEncoded($data, $key)
{
$result = openssl_encrypt($data, 'AES-128-ECB', $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING);
return trim(base64_encode($result));
}
但我现在收到带有消息的 SOAP 错误
SoapFault => 无法连接到主机
这让我开始思考问题是否出在我的新功能上?
【问题讨论】:
-
PHP 5.7 不存在。你是说 PHP 5.6 还是 7?
-
@Sammitch 5.6* 抱歉