gpt4 book ai didi

PHP 将 MCRYPT_ENCRYPT 转换为 OPENSSL_ENCRYPT(SOAP header )

转载 作者:行者123 更新时间:2023-12-04 12:47:27 24 4
gpt4 key购买 nike

我需要加密一些 SOAP header 字段,目前我在 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 => Could not connect to host

这让我开始思考问题是否出在我的新功能上?

最佳答案

您缺少一些初始化向量数据。

$ivsize = openssl_cipher_iv_length('AES-128-ECB');
$iv = openssl_random_pseudo_bytes($ivsize);

$ciphertext = openssl_encrypt(
$data,
'AES-128-ECB',
$key,
OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING,
$iv
);

关于PHP 将 MCRYPT_ENCRYPT 转换为 OPENSSL_ENCRYPT(SOAP header ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43482840/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com