gpt4 book ai didi

php - 使用 sha256WithRSAEncryption 签名需要什么版本的 OpenSSL

转载 作者:行者123 更新时间:2023-12-05 08:44:22 33 4
gpt4 key购买 nike

我正在尝试使用 PHP 5.2.4 和 OpenSSL 0.9.8g 模块创建签名摘要

openssl_sign($stuff, $signeddigest, $key, 'sha256WithRSAEncryption');

唉,$signeddigest 返回的是空的,我没有收到任何错误。

如果未指定“sha256WithRSAEncryption”算法,则使用默认算法返回签名摘要。

相同的代码在 PHP 5.3.10 和 OpenSSL 1.0.0g 上运行良好。 OpenSSL 0.9.8g 是否不支持 'sha256WithRSAEncryption' 算法?

最佳答案

一位好 friend 提出了在旧的 PHP 5.2.4 和 OpenSSL 0.9.8g 模块上使用 sha256WithRSAEncryption 的解决方法。

使用 http://www.di-mgt.com.au/rsa_alg.html 提供的信息他给我写了以下片段:

function my_openssl_sign($data, &$signature, $priv_key_id, $signature_alg = 'sha256WithRSAEncryption') {
$pinfo = openssl_pkey_get_details($priv_key_id);
$hash = hash('sha256', $data);
$t = '3031300d060960864801650304020105000420'; # sha256
$t .= $hash;
$pslen = $pinfo['bits']/8 - (strlen($t)/2 + 3);

$eb = '0001' . str_repeat('FF', $pslen) . '00' . $t;
$eb = pack('H*', $eb);

return openssl_private_encrypt($eb, $signature, $priv_key_id, OPENSSL_NO_PADDING);
}

谢谢你,Mads,你太棒了!

关于php - 使用 sha256WithRSAEncryption 签名需要什么版本的 OpenSSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10524198/

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