System.Security.Cryptography.RSAParameters 結構
本文提供此 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 欄位 | Contains | 對應的 PKCS #1 欄位 |
---|---|---|
D | d,私人指數 | privateExponent |
DP | d mod (p - 1) | exponent1 |
DQ | d mod (q - 1) | exponent2 |
Exponent | e, public exponent | publicExponent |
InverseQ | (反向Q)(q) = 1 mod p | 係數 |
Modulus | n | 模數 |
P | p | prime1 |
Q | q | prime2 |
RSA 的安全性衍生自假設公鑰 { e, n },因此無法直接計算 d,或將 n 分解為 p 和 q。 因此,與 d、p 或 q 相關的任何部分都必須保密。 如果您只呼叫 ExportParameters 並要求公鑰資訊,這就是您只 Exponent 會收到 和 Modulus的原因。 只有您有私鑰的存取權,而且您要求私鑰時,才能使用其他字段。
RSAParameters 不會以任何方式加密,因此當您搭配私鑰資訊使用時,必須小心。 的所有成員 RSAParameters 都會串行化。 如果任何人都可以衍生或攔截私鑰參數,金鑰及其所有加密或簽署的資訊都會遭到入侵。