同时从OpenSSL生成EC密钥对



我想创建一个EC私钥和公钥,并将它们放在一个文件中。我可以用创建私钥

openssl ecparam -genkey -name prime256v1 -noout -out ec256-key-pair.pem

但是像这样,文件只包含私钥。是否有一个参数,即openSSL同时创建两个密钥?

我想要一个像这样的文件:

-----BEGIN EC PARAMETERS-----
BgUrgQQACg==
-----END EC PARAMETERS-----
-----BEGIN EC PRIVATE KEY-----
MHQCAQEEIKMPbg+xGGkig+N+lLzCJ9mJ019yqicZezlbF3IeuQkUoAcGBSuBBAAK
oUQDQgAEor2P+NfmQDuS7mcSVGp6b4AiMXkwlKayJcOLMFjovue1ZsUjMIbw53P3
AF5+G6N0arUq+9tT87a+TTRwxiXYqA==
-----END EC PRIVATE KEY-----
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE///n/cRdxm49shZtjnrQxnemfJgF
A8UVjNyXtShULmgOJOQh7E9yZfomLkFj0FVkd1M9g7hfL+DO3Utl61kJcg==
-----END PUBLIC KEY-----

但是像这样,文件只包含私钥。

文件ec256-key-pair.pem实际上包括密钥对的私有部分和公共部分。您可以通过使用openssl ec命令打印其内容来验证:

$ openssl ec -in ec256-key-pair.pem -noout -text
read EC key
Private-Key: (256 bit)
priv:
a3:0f:6e:0f:b1:18:69:22:83:e3:7e:94:bc:c2:27:
d9:89:d3:5f:72:aa:27:19:7b:39:5b:17:72:1e:b9:
09:14
pub:
04:a2:bd:8f:f8:d7:e6:40:3b:92:ee:67:12:54:6a:
7a:6f:80:22:31:79:30:94:a6:b2:25:c3:8b:30:58:
e8:be:e7:b5:66:c5:23:30:86:f0:e7:73:f7:00:5e:
7e:1b:a3:74:6a:b5:2a:fb:db:53:f3:b6:be:4d:34:
70:c6:25:d8:a8
ASN1 OID: secp256k1

实际上,您可以看到它还包含曲线标识符。

我想要一个看起来像这样的文件:

尽管有上述信息,如果您仍然需要,可以使用openssl ec命令提取这三个不同的部分。参数使用选项-param_out,私钥(实际上包括公共部分(不使用选项,仅公共部分使用-pubout

$ openssl ec -in ec256-key-pair.pem -param_out > result.txt
$ openssl ec -in ec256-key-pair.pem >> result.txt
$ openssl ec -in ec256-key-pair.pem -pubout >> result.txt

这样,result.txt将包含您所要求的内容。对于一个班轮中的所有内容,如您所要求的:

$ KEY_PEM=$(openssl ecparam -genkey -name prime256v1 -noout) && for OPTION in -param_out "" -pubout; do openssl ec -in <(echo "${KEY_PEM}") ${OPTION}; done > result.txt

(假设您使用bash作为外壳(

最新更新