4

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

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

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

4

3 回答 3

4

有许多不同的格式来表示 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 的格式。

于 2009-08-29T19:21:09.397 回答
2

您将无法创建这样的数组。“公钥”有两部分:指数和模数。它们是单独的数字,必须分开保存,因为稍后需要两者来执行加密和解密。尽管您n是 1024 位,但公共密钥一共必然更长。

于 2009-08-29T19:21:18.710 回答
2

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

于 2009-08-29T19:23:02.667 回答