gpt4 book ai didi

php - 无法在 PHP 中验证 openssl 签名

转载 作者:行者123 更新时间:2023-12-04 05:46:41 25 4
gpt4 key购买 nike

如果我使用 openssl 创建一个新的 key 对,使用私钥对一些数据进行签名,并使用公钥来验证签名......它可以工作。

$ openssl genrsa -out mykey.pem 1024
$ openssl rsa -in mykey.pem -pubout > mypubkey.pem
$ echo 'It could be bunnies' > file.txt
$ openssl rsautl -sign -in file.txt -inkey mykey.pem -out sig.txt
$ openssl rsautl -verify -in sig.txt -inkey mypubkey.pem -pubin
It could be bunnies

但是,如果我尝试使用 php 中的 openssl 库验证签名,则会失败。
$pubkey = openssl_pkey_get_public(file_get_contents('/var/key/mypubkey.pem')); 
$sig = file_get_contents('/var/key/sig.txt');
$data = file_get_contents('/var/key/file.txt');
$verifyResult = (openssl_verify($data, $sig, $pubkey) == 1);

与 Crypt_RSA 类似的故事
$pubkey = file_get_contents('/var/test/mypubkey.pem');
$sig = file_get_contents('/var/test/sig.txt');
$data = file_get_contents('/var/test/file.txt');
$rsa = new Crypt_RSA();
$rsa->loadKey($pubkey);
$rsa->verify($data, $sig);
$verifyResult = $rsa->verify($data, $sig);

我如何让 php 玩得很好?这些示例经过简化,但符合我的需要。在现实世界中,我只会拥有数据、签名和公钥……

最佳答案

对于 phpseclib,请在调用 $rsa->verify() 之前尝试 $rsa->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1)。

关于php - 无法在 PHP 中验证 openssl 签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10594080/

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