生成公私钥实践:

生成私钥,这里以椭圆曲线secp256k1为例:

openssl ecparam -name secp256k1 -genkey -out secp256k1-priv.pem                           #带EC曲线参数
openssl ecparam -name secp256k1 -genkey -noout -out secp256k1-priv.pem #不带EC曲线参数

查看私钥文件中的内容,包括私钥和公钥的hex编码形式:

openssl pkey -in secp256k1-priv.pem -text

根据私钥生成对应公钥:

openssl ec -in secp256k1-priv.pem -pubout -out secp256k1-pub.pem

私钥文件通常有两种格式pkcs#1和pkcs#8,上面openssl生成的默认为pkcs#1格式,

pkcs#1格式包括如下头部和尾部:

-----BEGIN EC PRIVATE KEY-----
BASE64 ENCODED DATA
-----END EC PRIVATE KEY-----

pkcs#8格式包括如下头部和尾部

-----BEGIN PRIVATE KEY-----
BASE64 ENCODED DATA
-----END PRIVATE KEY-----

如果要转换为pkcs#8格式:

openssl pkcs8 -topk8 -nocrypt -in secp256k1-priv.pem -out secp256k1-priv-pk8.pem
05-12 10:32