| 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()
|
|||||||||||||||||||||
