在使用 OpenSSL 生成 ECC 密钥时,我们可以指定是否需要明确的公钥信息或命名曲线。
命名曲线:openssl ecparam -name secp256r1 -genkey -noout -out my.key.pem
显式曲线:openssl ecparam -name secp256r1 -genkey -noout -out my.key.pem -param_enc explicit
我们可以使用以下命令提取公钥:openssl ec -in my.key.pem -pubout -outform pem -out mykey.pub
对于 mykey.pub 内的显式曲线密钥,所有曲线参数也都被嵌入。
假设我只有公钥。我想知道,是否有任何方法可以将具有显式曲线信息的公钥转换为具有命名曲线的公钥。我想这样做是因为许多其他库(如 bouncycastle、pycrypto)不接受具有显式曲线参数的公钥。
提前致谢!
答案1
这会将包含明确 EC 参数的 EC 公钥转换为对命名曲线进行编码的 EC 公钥:
openssl ec -in pub.pem -pubin -param_enc named_curve > pub_named.pem