Laz*_*zlo 6 rsa public-key-encryption
我有一个 128 字节(1024 位)模数(采用字节数组格式)和指数(也是采用字节数组格式)。我需要创建一个代表公钥的 128 字节数组。
根据维基百科,“公钥由模数 n 和公共(或加密)指数 e 组成。” 但这并没有告诉我如何混合两者。
正确的操作是什么?
- n^e(会保持 128 字节长吗?)
- 只是 n?
- n 后面跟着 e?
- n 添加到 e 上?
- 还有什么吗?
有许多不同的格式来表示 RSA 公钥。PKCS#1 是最广泛使用的之一。在RFC 3447中,公钥格式的定义如下:
RSAPublicKey ::= SEQUENCE {
modulus INTEGER, -- n
publicExponent INTEGER -- e
}
Run Code Online (Sandbox Code Playgroud)
要以该格式表示密钥,您需要对此数据结构应用 ASN.1 DER 编码。
另一个选择是来自 RFC 3280 的SubjectPublicKeyInfo:
SubjectPublicKeyInfo ::= SEQUENCE {
algorithm AlgorithmIdentifier,
subjectPublicKey BIT STRING
}
Run Code Online (Sandbox Code Playgroud)
对于 RSA,算法应为1.2.840.113549.1.1.1。
还有其他几种格式,例如用于 SSL 的格式。