本文提供了此 API 参考文档的补充说明。
该 RSAParameters 结构表示 RSA 算法的标准参数。
该 RSA 类公开一种方法 ExportParameters ,使你能够以结构的形式 RSAParameters 检索原始 RSA 键。
若要了解此结构的内容,它有助于熟悉 RSA 算法的工作原理。 下一部分简要讨论算法。
RSA 算法
若要生成密钥对,首先创建两个名为 p 和 q 的大型质数。 这些数字相乘,结果称为 n。 由于 p 和 q 都是质数,所以 n 的唯一因素是 1、p、q 和 n。
如果我们只考虑小于 n 的数字,则与 n 互质的数字的计数,即与 n 没有公因数的数字的数量,等于 (p - 1)(q - 1)。
现在,选择一个数字 e,该数字与你计算的值互质。 公钥现在表示为 {e, n}。
若要创建私钥,必须计算 d,这是一个数字,以便 (d)(e) mod (p - 1)(q - 1) = 1。 根据 Euclidean 算法,私钥现在为 {d, n}。
将明文 m 的加密定义为密文 c,其中 c = (m ^ e) mod n。 然后,解密将定义为 m = (c ^ d) mod n。
字段摘要
PKCS #1 的 A.1.2 部分 :RSA 加密标准 定义 RSA 私钥的格式。
该结构 RSAParameters 的字段汇总如下。 第三列在 PKCS #1:RSA 加密标准的第 A.1.2 节中提供了相应的字段。
RSAParameters 字段 | 包含 | 对应的 PKCS #1 字段 |
---|---|---|
D | d,专用指数 | privateExponent |
DP | d mod (p - 1) | exponent1 |
DQ | d mod (q - 1) | exponent2 |
Exponent | e,公共指数 | publicExponent |
InverseQ | (反向Q)(q) = 1 mod p | 系数 |
Modulus | n | 模 |
P | p | prime1 |
Q | q | prime2 |
RSA 的安全性源于这样一个事实:鉴于公钥 { e, n },要么直接计算出 d,要么通过将 n 因数分解为 p 和 q 来计算 d,在计算上都是不可行的。 因此,与 d、p 或 q 相关的密钥的任何部分都必须保密。 如果你调用 ExportParameters 并只请求公钥信息,你只会收到 Exponent 和 Modulus,这就是原因。 仅当有权访问私钥并请求它时,其他字段才可用。
RSAParameters 不会以任何方式加密,因此在将它与私钥信息一起使用时必须小心。 RSAParameters的所有成员均已被序列化。 如果任何人都可以派生或截获私钥参数,则会泄露密钥及其加密或签名的所有信息。