是否有任何等效的命令来计算openssl的sha256withRSA签名?

时间:2017-08-29 16:09:03

标签: openssl rsa sha256

我有一个要通过以下命令签名的文件:

$ openssl sha256 -binary myfile.txt > my.digest
$ openssl rsautl -sign -inkey privatekey.pem -in my.digest > wrong.result

是否有任何等效命令可以获得相同的结果?我尝试了以下方法(首先计算sha256摘要,然后签署摘要)。但它不起作用:

-XX:-UseAdaptiveSizePolicy

" wrong.result" 的内容总是与" right.result" 不同。有人能告诉我原因吗?非常感谢你!

1 个答案:

答案 0 :(得分:-1)

使用openssl sha256 -sign ...使openssl计算PKCS#1" SHA256withRSA"算法,由RFC-8017完全指定。

这不仅仅意味着执行SHA-256摘要并使用RSA 进行签名,就像您在示例的第二部分中所做的那样。

原因如下:

根据此RFC,签名必须与RSA模数具有相同的长度。您的RSA模数为512位长(使用openssl genrsa的默认值)或更多,因此计算的签名必须具有512位(或更多)的长度。即使散列函数(HMAC-SHA256)返回256位长度的值。

因此,要计算512位的签名,仅从256位的HMAC-SHA256摘要,RFC-8017要求您使用I2OSP Integer-to-Octet-String原语,它带有2个参数:您的256位哈希,和整数512(RSA模数的长度)。 I2OSP将输出512位长度的八位字节串。最后,这是将使用您的RSA私钥加密的八位字节字符串。

但您尚未计算此中间整数到八位字符串的值。这就是您的签名不匹配的原因。