如何组合n和e在RSA中创建公钥?

时间:2009-08-29 19:03:07

标签: rsa public-key-encryption

我有128字节(1024位)模数(以字节数组格式)和我的指数(也是字节数组格式)。我需要创建一个代表公钥的128字节数组。

根据维基百科,“公钥由模数n和公共(或加密)指数e组成。”但这并没有告诉我如何混合两者。

正确的操作是什么?
- n ^ e(会保持128个字节长吗?)
- 只是n?
- n后跟e?
- n添加到e?
- 别的什么?

3 个答案:

答案 0 :(得分:3)

有许多不同的格式来表示RSA公钥。其中一个更广泛的是PKCS#1。在RFC 3447中,公钥格式的定义为

  RSAPublicKey ::= SEQUENCE {
      modulus           INTEGER,  -- n
      publicExponent    INTEGER   -- e
  }

要表示该格式的密钥,您需要将ASN.1 DER编码应用于此数据结构。

另一个选择是来自RFC 3280的SubjectPublicKeyInfo:

  SubjectPublicKeyInfo  ::=  SEQUENCE  {
     algorithm            AlgorithmIdentifier,
     subjectPublicKey     BIT STRING  
  }

对于RSA,算法应为1.2.840.113549.1.1.1

还有其他几种格式,例如用于SSL的格式。

答案 1 :(得分:2)

您将无法创建此类阵列。 “公钥”包含两部分:指数和模数。它们是必须分开的单独数字,因为稍后需要执行加密和解密。虽然您的n是1024位,但公钥必须更长。

答案 2 :(得分:1)

“N后跟e”可能最接近你想要的。但是,如果您打算与其他基于RSA的系统进行互操作,则应查阅该系统的文档,以了解他们希望如何格式化公钥。