Cryptography 从OpenSSL命令行生成EC密钥对

Cryptography 从OpenSSL命令行生成EC密钥对,cryptography,openssl,Cryptography,Openssl,我希望能够使用openssl在命令行中生成一个密钥对私有密钥和公钥,但我不知道具体怎么做。到目前为止,我所做的是执行以下命令行,但这只打印了这个,我不知道它到底是什么:s 从OPENSSL页面:要使用显式参数创建EC参数: openssl ecparam -out ec_param.pem -name prime192v1 -param_enc explicit -----BEGIN EC PARAMETERS----- MIHHAgEBMCQGByqGSM49AQECGQD/////////

我希望能够使用openssl在命令行中生成一个密钥对私有密钥和公钥,但我不知道具体怎么做。到目前为止,我所做的是执行以下命令行,但这只打印了这个,我不知道它到底是什么:s

从OPENSSL页面:要使用显式参数创建EC参数:

openssl ecparam -out ec_param.pem -name prime192v1 -param_enc explicit

-----BEGIN EC PARAMETERS-----
MIHHAgEBMCQGByqGSM49AQECGQD////////////////////+//////////8wSwQY
/////////////////////v/////////8BBhkIQUZ5ZyA5w+n6atyJDBJ/rje7MFG
ubEDFQAwRa5vyEIvZO1XlSjTgSDq4SGW1QQxBBiNqA6wMJD2fL8g60OhiAD0/wr9
gv8QEgcZK5X/yNp4YxAR7WskzdVz+XehHnlIEQIZAP///////////////5ne+DYU
a8mxtNIoMQIBAQ==
-----END EC PARAMETERS-----
有人能告诉我如何得到这样的东西吗:

//-----------------Generated Key Pair----------------------------------//
char privkey[]=
    "-----BEGIN EC PARAMETERS-----\n"
    "BgUrgQQACQ==\n"
    "-----END EC PARAMETERS-----\n"
    "-----BEGIN EC PRIVATE KEY-----\n"
    "MFACAQEEFI9sfpfTk0YlZx8JaCZnLsy4T6HYoAcGBSuBBAAJoSwDKgAEIlzYflxD\n"
    "0396M0i6dGfSY3khTU7kiNyEv/B1EoyGmqvH7tjhSmpP1A==\n"
    "-----END EC PRIVATE KEY-----\n";
char pubkey[] =
    "-----BEGIN PUBLIC KEY-----\n"
    "MD4wEAYHKoZIzj0CAQYFK4EEAAkDKgAEIlzYflxD0396M0i6dGfSY3khTU7kiNyE\n"
    "v/B1EoyGmqvH7tjhSmpP1A==\n"
    "-----END PUBLIC KEY-----\n";
//---------------------------------------------------------------------//
我是从一个在线代码中得到的,它使用这个密钥对ECDSA对消息进行签名,但现在我希望能够生成我自己的密钥对(从openssl命令行)并在代码中使用它,像这样,为我的密钥对进行更改

在我的例子中,我想使用NIST P225,即“prime256v1”

有人能帮我吗


谢谢,最诚挚的问候

私钥

假设用户体验平台,如OS X或Linux。测试时也省略$。生成专用ECDSA密钥:

 $ openssl ecparam -name prime256v1 -genkey -noout -out private.ec.key
 $ openssl ec -in private.pem -pubout -out public.pem
使用密码短语转换和加密私钥:

 $ openssl pkcs8 -topk8 -in private.ec.key -out private.pem
现在,只要记住密码,就可以安全地删除
private.ec.key

公钥

生成公共ECDSA密钥:

 $ openssl ecparam -name prime256v1 -genkey -noout -out private.ec.key
 $ openssl ec -in private.pem -pubout -out public.pem
测试

制作一个用于测试的小文本文件:

 $ touch msg.txt | echo "hello world" > msg.txt
制作哈希摘要:

 $ openssl dgst -sha256 -out msg.digest.txt msg.txt
从摘要中生成签名文件:

 $ openssl dgst -sha256 -sign private.pem -out msg.signature.txt msg.digest.txt
验证签名:

 $ openssl dgst -sha256 -verify public.pem -signature msg.signature.txt msg.digest.txt
此外,您可能希望在邮寄签名之前将其编码到base64,然后在收到签名后进行验证之前将其解码到bin

以下是您如何做到这一点:

编码:

 $ openssl base64 -in msg.signature.txt -out msg.base64.sig.txt
解码:

 $ openssl base64 -d -in msg.base64.sig.txt -out msg.signature.txt

您可能想看看感谢您的回答,但这是通过编程获得值。我想用openssl命令行生成它们,并在我的代码中对它们进行编码,以便每次运行程序时始终使用相同的密钥。你知道我能做到吗?因为从命令行我无法获得私钥和公钥:谢谢