当前位置: 首页 > 知识库问答 >
问题:

从OpenSSL命令行生成EC密钥对

闻人和泽
2023-03-14

我希望能够使用openssl在命令行中生成一对私钥和公钥,但我不知道该怎么做。到目前为止,我所做的是在命令行中执行以下操作,但这只打印了我不知道确切的内容:s

来自OPENSSL PAGE:要使用显式参数创建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”。

有人能帮我吗?

谢谢,最诚挚的问候

共有1个答案

强硕
2023-03-14

私钥

假设有一个UX平台,比如OS X或Linux。测试时也要省略$。生成私有ECDSA密钥:

 $ openssl ecparam -name prime256v1 -genkey -noout -out private.ec.key

使用密码短语转换和加密私钥:

 $ openssl pkcs8 -topk8 -in private.ec.key -out private.pem

您现在可以安全地删除 private.ec.key只要您记得密码短语即可。

公钥

生成公共ECDSA密钥:

 $ 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

此外,您可能希望在邮寄签名之前将其编码为base 64,然后在收到后进行验证之前将其解码为bin。

操作方法如下:

编码:

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

解码:

 $ openssl base64 -d -in msg.base64.sig.txt -out msg.signature.txt
 类似资料:
  • 当使用keytool生成keystore时,我收到错误非法选项:genkeypair。但是当我看到帮助时,genkeypair是可用的选项。我在指挥上做错了什么? C:\program files\java\jdk1.7.0_51\bin>keytool.exe-genkeypair-alias orbis-storetype pkcs12-keyalg rsa-keysize 2048-keys

  • 我试图通过向泰雷兹hsm发送命令,从加密组件中生成密钥;命令是:从加密组件(A4)中形成密钥,其中“HCONA42001UUF564A40B2E64C84233DFB1289B482496U30CDD5A92A3CACBA19496ECBD134C0E7”,我得到的响应是“HCONA510”,其中10表示组件奇偶校验错误<有什么想法吗?

  • 我创建了一个ECDSA密钥对,并使用OpenSSL导出了公钥,但我无法从Java中读取公钥。 OpenSSL中的密钥生成: 从文件中读取密钥的 Clojure 代码,将 作为依赖项: 使用NIST P-256曲线生成密钥: 从磁盘加载: 公钥的内容:

  • 我正在尝试创建一个公钥以允许我推送到Git,但我的. ssh文件夹尚未创建。 以下是我运行的命令: $ssh-keygen-t rsa-Cemaill@me.com 生成公共/私有rsa密钥对 输入保存密钥的文件(/h/.ssh/id\u rsa): 这就是H:驱动器配置、数据、配置文件、配置文件中的全部内容。V2 我认为有一个问题,因为当我得到提示输入文件,其中保存密钥(/h//. ssh/id

  • 问题内容: 我使用openssl生成认证密钥。这是我的命令: openssl genrsa -des3 -out enc_key.pem 1024 我导出到cer文件中,然后使用java keytool导入到Java keystore(jks)中。 密钥库听起来不错。我可以从Java应用程序加载密钥库。 问题是客户端连接到服务器(在这种情况下是FTP服务器,而不是Web服务器,而我使用apache

  • 我正在尝试使用带有相同密钥和 iv 的 AES 加密相同的文本。我使用 bash 方法和 ruby 的 openssl stdlib,并对加密结果进行 b64 编码。但结果不同!我试图理解为什么。这是我所做的: 红宝石(1.9.3-p448) 砰砰�� -iv参数设置为上面计算的iv_hex值。 ========================================= 我仔细检查了静脉注