我有一个使用以下算法创建的数字签名:计算消息正文的SHA-256散列。然后使用RSA私钥对其进行签名,结果是base64 64编码的。
现在,我有了与私钥相对应的RSA公钥,该私钥用于加密哈希。我想使用RSA公钥对数字签名进行解密,以便给出服务器发送的消息正文的SHA-256散列。稍后,我可以将其与接收到的消息正文的SHA-256哈希进行比较。
我无法恢复SHA-256散列(我期望得到64个十六进制字符)。以下是我正在做的事情:
我将公钥以下列格式保存在一个文件pub.key中:
-----BEGIN PUBLIC KEY-----
the key itself
-----END PUBLIC
我想在node.js中的一个文件上执行RSA 512。我可以计算给定数据文件的sha512散列,它与openssl的哈希值相匹配,但是当试图在相同的散列上获得数字签名时,node.js签名不同于openssl签名。下面是一个示例代码片段:
var data = new Buffer(512);
data = fs.readFileSync('/tmp/data');
var pem = fs.readFileSync('/tmp/boot2-prvKey.pem');
var privateKey = pem.toString('ascii');
我对SSL和证书不太了解。我使用post "“来查看是否可以使用PayPal工作来获得webhooks。
我遇到的问题是,在调用openssl_verify()和返回(0)的结果后,我得到了以下错误:
OpenSSL错误openssl_verify错误:04091068:rsa routines:INT_RSA_VERIFY:bad签名
我试图解决这个问题,但是关于错误和网络功能的文档很少。
我的当前代码如下:
// get the header post to my php file by PayPal
$headers = apache_request_headers(