zh_cn |
KeyPairGenerator 類用於生成公鑰和私鑰對。密鑰對生成器是使用 getInstance
工廠方法(返回一個給定類的實例的靜態方法)構造的。
特定算法的密鑰對生成器可以創建能夠與此算法一起使用的公鑰/私鑰對。它還可以將特定於算法的參數與每個生成的密鑰關聯。
有兩種生成密鑰對的方式:與算法無關的方式和特定於算法的方式。兩種方式的唯一區別在於對象的初始化:
- 與算法無關的初始化
所有的密鑰對生成器遵循密鑰大小和隨機源的概念。對於不同的算法,密鑰大小的解釋也不相同(例如,對於 DSA 算法,密鑰大小對應於模的長度)。此 KeyPairGenerator 類有一個
initialize
方法,該方法帶有兩個通用的共享類型的參數。還有一個只帶有keysize
參數的方法,它使用以最高優先級安裝的提供者的SecureRandom
實現作為隨機源。(如果任何安裝的提供者都不提供SecureRandom
的實現,則使用系統提供的隨機源。)因為調用上述與算法無關的
initialize
方法時沒有指定其他參數,所以由提供者決定如何處理與每個密鑰關聯的特定於算法的參數(如果有)。如果算法為 DSA 算法,密鑰大小(模大小)為 512、768 或 1024,那么 Sun 提供者對
p
、q
和g
參數使用一組預計算值。如果模大小不是上述值之一,則 Sun 提供者創建一個新的參數集合。其他提供者可能具有供更多模大小(不僅僅是上文提及的那三個)使用的預計算參數集合。其他提供者也可能沒有任何預計算參數列表,而總是創建新的參數集合。 - 特定於算法的初始化
對於特定於算法的參數集合已存在的情況(例如,DSA 中所謂的公用參數),有兩個
initialize
方法具有AlgorithmParameterSpec
參數。其中一個方法還有一個SecureRandom
參數,而另一個方法使用以最高優先級安裝的提供者的SecureRandom
實現作為隨機源。(如果任何安裝的提供者都不提供SecureRandom
的實現,則使用系統提供的隨機源。)
每個提供者都必須提供(並記錄)默認的初始化,以防客戶端沒有顯式初始化 KeyPairGenerator(通過調用 initialize
方法)。例如,Sun 提供者使用 1024 位的默認模大小(密鑰大小)。
注意,由於歷史原因,此類是抽象類,是從 KeyPairGeneratorSpi
擴展的。應用程序開發人員只需注意在此 KeyPairGenerator
類中定義的方法;超類中的所有方法是供加密服務提供者使用的,這些加密服務提供者希望提供自己的密鑰對生成器實現。
version | 1.59, 04/21/06 |
See also | java.security.spec.AlgorithmParameterSpec |
Constructors | |||||
---|---|---|---|---|---|
protected | KeyPairGenerator(String algorithm)
|
Methods | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
public KeyPair | generateKeyPair()
如果此 KeyPairGenerator 沒有被顯式初始化,特定於提供者的默認值將用於所生成密鑰的大小和其他(特定於算法的)值。 每次調用此方法都將生成新的密鑰對。 此方法在功能上等同於
|
||||||||||||
final public KeyPair | genKeyPair()
如果此 KeyPairGenerator 沒有被顯式初始化,特定於提供者的默認值將用於所生成密鑰的大小和其他(特定於算法的)值。 每次調用此方法都將生成新的密鑰對。 此方法在功能上等同於
|
||||||||||||
public void | initialize(int keysize)
SecureRandom 實現作為隨機源。(如果任何安裝的提供者都不提供 SecureRandom 的實現,則使用系統提供的隨機源。)
|
||||||||||||
public void | initialize(int keysize, SecureRandom random)
|
||||||||||||
public void | initialize(AlgorithmParameterSpec params) throws InvalidAlgorithmParameterException
SecureRandom 的實現作為隨機源。(如果任何安裝的提供者都不提供 SecureRandom 的實現,則使用系統提供的隨機源。) 已將此具體方法添加到以前定義的這個抽象類中。此方法調用 KeyPairGeneratorSpi 的
|
||||||||||||
public void | initialize(AlgorithmParameterSpec params, SecureRandom random) throws InvalidAlgorithmParameterException
已將此具體方法添加到以前定義的這個抽象類中。此方法調用 KeyPairGeneratorSpi 的
|
Properties | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
public String | getAlgorithm()
|
|||||||||||||||||||||
public static KeyPairGenerator | getInstance(String algorithm) throws NoSuchAlgorithmException
此方法從首選 Provider 開始遍歷已注冊安全提供者列表。返回封裝 KeyPairGeneratorSpi 實現的新 KeyPairGenerator 對象,該實現取自第一個支持指定算法的 Provider。 注意,可以通過
|
|||||||||||||||||||||
public static KeyPairGenerator | getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
返回一個封裝 KeyPairGeneratorSpi 實現的新 KeyPairGenerator 對象,該實現取自指定提供者。指定提供者必須在安全提供者列表中注冊。 注意,可以通過
|
|||||||||||||||||||||
public static KeyPairGenerator | getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
返回一個封裝 KeyPairGeneratorSpi 實現的新 KeyPairGenerator 對象,該實現取自指定 Provider 對象。注意,指定 Provider 對象無需在提供者列表中注冊。
|
|||||||||||||||||||||
final public Provider | getProvider()
|