我有128字节(1024位)模数(以字节数组格式)和我的指数(也是字节数组格式)。我需要创建一个代表公钥的128字节数组。
根据维基百科,“公钥由模数n和公共(或加密)指数e组成。”但这并没有告诉我如何混合两者。
正确的操作是什么?
- n ^ e(会保持128个字节长吗?)
- 只是n?
- n后跟e?
- n添加到e?
- 别的什么?
答案 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的系统进行互操作,则应查阅该系统的文档,以了解他们希望如何格式化公钥。