RSAParameters 结构
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示 RSA 算法的标准参数。
public value class RSAParameters
public struct RSAParameters
[System.Serializable]
public struct RSAParameters
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public struct RSAParameters
type RSAParameters = struct
[<System.Serializable>]
type RSAParameters = struct
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type RSAParameters = struct
Public Structure RSAParameters
- 继承
- 属性
注解
类 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 的 A.1.2 部分 :RSA 加密标准中的相应字段。
RSAParameters 字段 | 包含 | 相应的 PKCS #1 字段 |
---|---|---|
D | d,私有指数 | privateExponent |
DP | d mod (p - 1) | exponent1 |
DQ | d mod (q - 1) | exponent2 |
Exponent | e,公共指数 | publicExponent |
InverseQ | (InverseQ) (q) = 1 mod p | 系数 |
Modulus | n | modulus |
P | p | prime1 |
Q | q | prime2 |
RSA 的安全性源于这样一个事实,即给定公钥 { e, n },计算 d 是不可行的,无论是直接计算还是将 n 分解为 p 和 q。 因此,与 d、p 或 q 相关的密钥的任何部分都必须保密。 如果调用 ExportParameters 并仅请求公钥信息,这就是仅 Exponent 接收 和 Modulus的原因。 仅当你有权访问私钥并且你请求它时,其他字段才可用。
RSAParameters 未以任何方式加密,因此在将其与私钥信息一起使用时必须小心。 的所有成员 RSAParameters 都已序列化。 如果任何人都可以派生或截获私钥参数,则密钥及其加密或签名的所有信息都会泄露。
字段
D |
表示 RSA 算法的 |
DP |
表示 RSA 算法的 |
DQ |
表示 RSA 算法的 |
Exponent |
表示 RSA 算法的 |
InverseQ |
表示 RSA 算法的 |
Modulus |
表示 RSA 算法的 |
P |
表示 RSA 算法的 |
Q |
表示 RSA 算法的 |