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

使用openssl以特定格式创建RSA密钥

纪成礼
2023-03-14

我们在大型机中使用ICSF创建了一个RSA密钥对。十六进制格式生成的公钥大小为580个字符,结构分为

前缀-18字符(9字节)-3082010A02820100

公模-512 char(256 bytes)AA5DA28FEDADE7FEAD8C610E4C16E54FD415FEA173518BD9ADC3C7EB332E86E973B7F6E9BF90F277FD4B6A15E736C566857AAA58F8C5415E1F606DBF74FAFCBCAE99A4E77AF7F4958E163E2159C6083826D203AD75685A53AFBC7221CDEF23FA68CE41270A1756AC5814A09713A7EB941CD61055143C37FC7AF1E0E6F1539CEEA49F331A0BEC0453F6B6A47A37F66EDDF5F308AED5E5172CD8768CF43CD024E7988905B0C22CAA888E3162

指数-10字符(5字节)-020301001

SHA1散列-40个字符(20字节)-CDC0B4A4253110D6E4A15DF536257A7B89B4231D

我们必须创建一个RSA密钥对,公钥的格式必须与上面相同。我们使用openssl尝试了这一点,但创建的公钥的格式不同。

  1. 生成密钥对$openssl genrsa-out priv1。2048键
  2. 以pem格式$openssl rsa-在priv1中提取公钥。关键字-文本

这种格式叫什么?使用openssl,我们如何生成rsa密钥对,从而使公钥采用上述格式

共有1个答案

祁远
2023-03-14

除了SHA1散列以外的所有东西都是ASN。1个编码PKCS#1个公钥。如果您有openssl 1.0.0或更高版本,您可以按如下方式创建:

crow@mac:~$ openssl genrsa 2048 -out key.pem
crow@mac:~$ openssl rsa -in key.pem -RSAPublicKey_out -outform DER 2> /dev/null | xxd -p > hex.txt
crow@mac:~$ cat hex.txt
3082010a0282010100be4a968090c6f608a4151fcf65dfe842e818a8cf56
33e31ad1a912bfd5c453a89360a71b8d72786fbda131ebc3cc03cc742b5c
cbb1b9621cdee34e8c1c25ca125961dc7c5fd1cb18832402ecfb4b0b1bf7
c1b3dd666c0a789d9d721bfc13d4affb2bab0c0122a695ac3288786cb3f3
1a3d56969dbc164e4ef5f4a0319b175e5de29525a84816bbc837d892b9ba
6e3e462fe7a0ca0820ece4148cc76764c978ae2d41159fc4bb55cff31c53
de55511d825b59e07767ee90d184aa0017e99077c09a9badeab7770a401e
afec27f3abc98d141b50a7e4ba8c1c232af0df4ea83c8377f3ad360c17fd
fe762d4ec4502cc4c0dd81ba1df6fc499b490332f21ab511910203010001
crow@mac:~$ 

请注意,前9个字节和后5个字节与问题中的“前缀”和“指数”相同。

然后哈希被附加到末尾,它只是您刚刚十六进制编码的相同DER编码公钥的SHA1哈希(即获取原始ASN.1的哈希,而不是十六进制编码文本文件的哈希),例如。

crow@mac:~$ openssl rsa -in key.pem -RSAPublicKey_out -outform DER | openssl dgst -sha1 | cut -f 2 -d ' ' >> hex.txt
 类似资料:
  • 问题内容: 背景 在Linux上使用以下命令在OpenSSL上生成RSA密钥, 创建了以下内容: Java下的以下代码6, 输出以下内容: 问题 如何在通过Java代码创建的私钥和公钥周围放置“盔甲”? 为什么通过Java代码生成的每一行密钥都比OpenSSL输出的密钥长? 有什么区别吗?其他团队正在使用的一种工具在使用上述Java代码生成的私钥对消息签名时失败。但是,该工具使用OpenSSL生成

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

  • 在本章中,我们将重点介绍使用Python逐步实现RSA算法。 生成RSA密钥 生成RSA密钥涉及以下步骤 - 创建两个大素数,即p和q 。 这些数字的乘积称为n ,其中n= p*q 生成与(p-1)和(q-1).相对素数的随机数(q-1). 将数字称为e 。 计算e的模逆。 计算的倒数将被称为d 。 生成RSA密钥的算法 我们需要两个使用Python生成RSA密钥的主要算法 - Cryptomat

  • 我有一些加密的私钥和密码短语,我想加载进去。NET没有OpenSSL,但我很难找到它们的格式和规范。 我可以解析和解码来自PEM的二进制数据,最初我以为我会得到PKCS#8,但事实似乎并非如此。 创建它们的OpenSSL命令是生成如下文件: 据我所知,Base64编码的数据是无效的DER/ASN,我找到的工具只是说数据是无效的,包括openssl asn1parse-通知PEM...我假设这两个“

  • 我在创建/使用在PHP中创建和使用的RSA密钥方面有一个问题。问题是,(公共和私人)密钥应该在不同的服务器之间交换(例如,当移动用户帐户时)。 现在,PHP的openssl库没有提供任何关于密钥创建格式的详细信息。最新文档位于http://php.net/manual/en/function.openssl-pkey-export.php只是声明它是“PEM格式”,但没有说明它是在PKCS#1还是

  • 我想使用带有RSA算法的OpenSSL使用私钥加密文件: 现在,如果我执行解密操作: 此操作需要私钥 我知道我应该使用公钥进行加密,如果我使用私钥,我会得到一个签名。 然而,我想这样做是为了学习。