語言

RSAParameters 結構

定義

表示 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
繼承
RSAParameters
屬性

備註

結構 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 的所有成員都會被串行化。 如果任何人都可以衍生或攔截私鑰參數,金鑰及其所有加密或簽署的資訊都會遭到入侵。

欄位

名稱 Description
D

代表 D 該演算法的 RSA 參數。

DP

代表 DP 該演算法的 RSA 參數。

DQ

代表 DQ 該演算法的 RSA 參數。

Exponent

代表 Exponent 該演算法的 RSA 參數。

InverseQ

代表 InverseQ 該演算法的 RSA 參數。

Modulus

代表 Modulus 該演算法的 RSA 參數。

P

代表 P 該演算法的 RSA 參數。

Q

代表 Q 該演算法的 RSA 參數。

適用於

另請參閱