使用 sha256WithRSAEncryption 进行签名需要什么版本的 OpenSSL

2024-03-15

使用 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”算法?


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

使用以下网址提供的信息:http://www.di-mgt.com.au/rsa_alg.html 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); 
}

谢谢你,麦兹,你真是太棒了!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 sha256WithRSAEncryption 进行签名需要什么版本的 OpenSSL 的相关文章

随机推荐