本文提供此 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、p 或 q 相關的任何部分都必須保密。 如果您呼叫ExportParameters並要求公鑰資訊,這就是為什麼您只會收到Exponent和Modulus的原因。 只有在您有存取私鑰的權限並提出要求時,才可以使用其他欄位。
RSAParameters 不會以任何方式加密,因此當您搭配私鑰資訊使用時,必須小心。 RSAParameters 的所有成員都會被串行化。 如果任何人都可以衍生或攔截私鑰參數,金鑰及其所有加密或簽署的資訊都會遭到入侵。