ECDSA使用OpenSSL签名,不使用ASN1编码哈希

时间:2014-08-21 08:15:32

标签: cryptography openssl digital-signature

我使用dgst命令使用OpenSSL进行ECDSA签名,如下所示:

openssl dgst -sha256 -sign key.pem -out my_signature data_file

效果很好。但是我在this SO answer中读到它首先是SHA256哈希数据文件,而 ASN.1在签名之前对哈希进行编码

我想创建数据的SHA256哈希,并使ECDSA只签署此哈希的原始字节。 (由于这是ECDSA签名,我不能像上面提到的SO答案那样使用rsautl。)

如何使用OpenSSL实现此目的?

1 个答案:

答案 0 :(得分:1)

您可以使用openssl pkeyutl代替openssl rsautl 支持ECDSA。

假设您要哈希并签署“data.txt”#39;用openssl文件。起初你 需要散列文件:

openssl dgst -sha256 -binary -out data.sha256 data.txt

之后你可以签名:

openssl pkeyutl -sign -inkey private.pem -in data.sha256 -out data.sig

但签名仍为ASN.1格式。接收r和s值 签名使用openssl asn1parse

openssl asn1parse -inform DER -in data.sig