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

在OpenSSL中测试自生成的RSA公钥

柳和怡
2023-03-14

我使用我编写的程序生成了一个 PKCS#1 RSA 密钥对。我已经输出公钥作为RSAPublicKey ASN.1序列数据结构的DER编码。

然而,当我试图在OpenSSL pkeyutl和< code>rsautl命令中使用它时,OpenSSL说

无法加载公钥

我尝试过DER和PEM格式。

是否有额外的编码和/或数据结构需要我申请才能在OpenSSL中使用?

这是我的命令行:

openssl pkeyutl -encrypt -pubin -in 128-bit.dat -inkey rsa-1440-pub.pem
openssl rsautl -in 128-bit.dat -encrypt -keyform PEM -pubin -inkey rsa-1440-pub.pem

PEM 格式的公钥数据结构

-----BEGIN RSA PUBLIC KEY-----
MIG9AoG1AMuWjPN12DBObfQCxRVKLnP51BbFyEZeSJrmU3bPnwMv8S7hz0dGcSCA
Wa/EZWbNx8gLiWkHlcXeHC+8UO4rtOuaE9PhOXM819C8Y84Y8SddQ4RUMmj1y8ph
pBwExHDiSuKmbvFQLcB7uG10ZUFA9Q5bq/o6bNGsbTas/oB8TzSox5w66maDeyMc
cQFRko2/4AduuStYpnvi8eXa6kaAVDQ43NPCcdep0p78SKjYJNKu8WyZvwIDAQAB
-----END RSA PUBLIC KEY-----

共有1个答案

王宏深
2023-03-14

要让OpenSSL接受公钥,似乎需要将其包装在SubjectPublicKeyInfo数据结构中。像这样:

-----BEGIN PUBLIC KEY-----
MIHTMA0GCSqGSIb3DQEBAQUAA4HBADCBvQKBtQDLlozzddgwTm30AsUVSi5z+dQW
xchGXkia5lN2z58DL/Eu4c9HRnEggFmvxGVmzcfIC4lpB5XF3hwvvFDuK7TrmhPT
4TlzPNfQvGPOGPEnXUOEVDJo9cvKYaQcBMRw4kripm7xUC3Ae7htdGVBQPUOW6v6
OmzRrG02rP6AfE80qMecOupmg3sjHHEBUZKNv+AHbrkrWKZ74vHl2upGgFQ0ONzT
wnHXqdKe/Eio2CTSrvFsmb8CAwEAAQ==
-----END PUBLIC KEY-----
 类似资料:
  • 我知道可以使用此链接为OpenSSL中的自签名证书生成一个公钥和一个私钥。但是对于给定的公钥,我有没有可能算出对应的私钥呢?我一直在使用1024位的RSA公钥。

  • 主要的问题是,我对C相当陌生,OpenSSL留档对我来说不够清晰,我尝试过使用读和写rsa键到C中的pem文件,但我不太明白。例如,函数如何创建私有和公共?而从何而来?pcszPassphrase的意义是什么? 我会解释,好像这是某种伪代码,这就是我想做的,粗体部分是我不知道如何做的: 生成私钥和公钥作为十六进制缓冲区(客户端) 基本上,我知道如何处理AES加密/解密和通信协议,反正他们已经实现了

  • 如何使用OpenSSL支持的格式在Java中生成RSA密钥对? 有没有办法像我们在php中那样直接生成它们? 输出应该如下所示: 非常感谢。

  • 我需要一些使用OpenSSL的帮助,以便使用C(Windows和Linux)生成数据块的签名。该应用程序与谷歌认证有关。谷歌文档中的说明如下: “使用从Google开发者控制台获得的私钥,使用SHA256withRSA(也称为RSASSA-PKCS1-V1_5-Sign,使用SHA-256哈希函数)对输入的UTF-8表示形式进行签名。输出将是字节数组。” 私钥是一个密码。p12包含1660字节二进

  • 我正在Erlang中创建一个应用程序,给定一个RSA私钥,它可以返回RSA公钥和与该priv密钥相关联的x509公钥。 ----只是一个更新---- 在花了一些时间了解x509并阅读了Erlang public_key文档后,我找到了一个解决方案: 如果我可以通过简单地获取模数和publicExponent,从“RSaprivateKey”生成“RSapublicKey”,那么生成这两个键的代码如

  • 我想向AndroidKeyStore导入一个密钥。所以,我可以通过openssl以以下方式生成它 openssl rsa-text-in privateKey2048。佩姆 openssl pkcs8-topk8-通知PEM-in/私钥2048。pem-出口-出口私家车2048。德诺克里普特酒店 然后我可以把它从private2048.der转换成十六进制格式,可以在Android应用程序中的by