我使用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实现此目的?
答案 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