小编f41*_*zer的帖子

OpenSSL ECDSA 签名比预期长

我正在尝试生成用于加密芯片的“原始”、未编码的 ECDSA 签名。目标是在主机 pc 上签署某些内容,然后将其发送到芯片进行验证。但是,我遇到了一个小问题。我的理解是 ECDSA 签名应该是 64 个字节(对于 secp256v1)。而且,当我使用芯片生成签名时,它的长度确实是 64 个字节。但是,当我使用 openssl 时,签名的长度为 71 个字节。签名的开头似乎是某种前缀,但我找不到关于它是什么的任何数据。

这是我尝试做所有事情的方式:

生成密钥:

openssl ecparam -genkey -name secp256r1 -noout -out privkeyv1.pem
Run Code Online (Sandbox Code Playgroud)

生成要签名的“消息”:

echo -n "Hello World" > test.txt
Run Code Online (Sandbox Code Playgroud)

我尝试了两种签署消息的方法。两者都会导致相同的意外输出。

第一种方法 - 生成测试文件的 sha256 哈希值,然后对其进行签名:

sha256sum test.txt | cut -f 1 -d " " > hash
Run Code Online (Sandbox Code Playgroud)

使用 pkutil 签名

openssl pkeyutl -sign -in hash -inkey privkeyv1.pem -out test_sig_meth1
Run Code Online (Sandbox Code Playgroud)

方法二:使用 openssl dgst 签名

openssl dgst -sha256 -binary -sign privkeyv1.pem -out test_sig_meth2 test.txt 问题:这是输出xxd -p -c 256 …

openssl cryptography pki

6
推荐指数
1
解决办法
2054
查看次数

标签 统计

cryptography ×1

openssl ×1

pki ×1