使用手册中的以下命令使用 OpenSSL 生成的 256 位 ECC 密钥对(256 位应该是公钥的长度):
openssl ecparam -name secp256k1 -genkey -noout -out key.pem
和相应的公钥:
openssl ec -in key.pem -out public.pem -pubout
public.pem 文件包含一个 base64 编码的字符串,例如:
-----BEGIN PUBLIC KEY-----
MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEdPzYnkmkF8oy+R+FcByIbyPBE2l6HHOJ
mfZWtAaFZyIx9WPSzZTdyjmWlFqLvwaFlHu9OX9e7Snslfw7nneDIw==
-----END PUBLIC KEY-----
公钥由一个点(x 和 y 坐标)和使用的曲线组成。
解码后,每个坐标都是一个 256 位长的数字,而密钥本身绝不是 256 位长。这个对吗?
我的目标是尽可能缩短公钥长度,同时在我的应用程序中保持安全性,我不明白为什么建议的“256 位公钥”实际上是两倍多。