System.Security.Cryptography.RSAParameters 結構

本文提供此 API 參考文件的補充備註。

結構 RSAParameters 代表 RSA 演演算法的標準參數。

類別 RSAExportParameters 公開方法,可讓您以 結構的形式 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 都會串行化。 如果任何人都可以衍生或攔截私鑰參數,金鑰及其所有加密或簽署的資訊都會遭到入侵。