KeyPairGenerator


 

zh_cn

KeyPairGenerator 類用於生成公鑰和私鑰對。密鑰對生成器是使用 getInstance 工廠方法(返回一個給定類的實例的靜態方法)構造的。

特定算法的密鑰對生成器可以創建能夠與此算法一起使用的公鑰/私鑰對。它還可以將特定於算法的參數與每個生成的密鑰關聯。

有兩種生成密鑰對的方式:與算法無關的方式和特定於算法的方式。兩種方式的唯一區別在於對象的初始化:

  • 與算法無關的初始化

    所有的密鑰對生成器遵循密鑰大小和隨機源的概念。對於不同的算法,密鑰大小的解釋也不相同(例如,對於 DSA 算法,密鑰大小對應於模的長度)。此 KeyPairGenerator 類有一個 initialize 方法,該方法帶有兩個通用的共享類型的參數。還有一個只帶有 keysize 參數的方法,它使用以最高優先級安裝的提供者的 SecureRandom 實現作為隨機源。(如果任何安裝的提供者都不提供 SecureRandom 的實現,則使用系統提供的隨機源。)

    因為調用上述與算法無關的 initialize 方法時沒有指定其他參數,所以由提供者決定如何處理與每個密鑰關聯的特定於算法的參數(如果有)。

    如果算法為 DSA 算法,密鑰大小(模大小)為 512、768 或 1024,那么 Sun 提供者對 pqg 參數使用一組預計算值。如果模大小不是上述值之一,則 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)
zh_cn
為指定的算法創建 KeyPairGenerator 對象。
algorithm
zh_cn
算法的標准字符串名稱。有關標准算法名稱的信息,請參閱 Java Cryptography Architecture API Specification & Reference 中的附錄 A。
 

 

Methods
public KeyPair generateKeyPair()
zh_cn
生成一個密鑰對。

如果此 KeyPairGenerator 沒有被顯式初始化,特定於提供者的默認值將用於所生成密鑰的大小和其他(特定於算法的)值。

每次調用此方法都將生成新的密鑰對。

此方法在功能上等同於 generateKeyPair

return
zh_cn
生成的密鑰對

 

final public KeyPair genKeyPair()
zh_cn
生成密鑰對。

如果此 KeyPairGenerator 沒有被顯式初始化,特定於提供者的默認值將用於所生成密鑰的大小和其他(特定於算法的)值。

每次調用此方法都將生成新的密鑰對。

此方法在功能上等同於 generateKeyPair

return
zh_cn
生成的密鑰對
since 1.2

 

public void initialize(int keysize)
zh_cn
初始化確定密鑰大小的密鑰對生成器,使用默認的參數集合,並使用以最高優先級安裝的提供者的 SecureRandom 實現作為隨機源。(如果任何安裝的提供者都不提供 SecureRandom 的實現,則使用系統提供的隨機源。)
keysize
zh_cn
密鑰大小。它是特定於算法的度量(如模長度),以位數為單位指定。
Throws InvalidParameterException:
zh_cn
如果 keysize 不受此 KeyPairGenerator 對象支持。
 
public void initialize(int keysize, SecureRandom random)
zh_cn
使用給定的隨機源(和默認的參數集合)初始化確定密鑰大小的密鑰對生成器。
keysize
zh_cn
密鑰大小。它是特定於算法的度量(如模長度),以位數為單位指定。
random
zh_cn
隨機源。
Throws InvalidParameterException:
zh_cn
如果 keysize 不受此 KeyPairGenerator 對象支持。
since 1.2
 
public void initialize(AlgorithmParameterSpec params) throws InvalidAlgorithmParameterException
zh_cn
初始化密鑰對生成器,使用指定參數集合,並使用以最高優先級安裝的提供者的 SecureRandom 的實現作為隨機源。(如果任何安裝的提供者都不提供 SecureRandom 的實現,則使用系統提供的隨機源。)

已將此具體方法添加到以前定義的這個抽象類中。此方法調用 KeyPairGeneratorSpi 的 initialize 方法,為它傳遞 params 和隨機源(從以最高優先級安裝的提供者獲得;如果任何已安裝的提供者都不能提供,則由系統提供)。如果沒有被提供者重寫,則該 initialize 方法總是拋出 UnsupportedOperationException。

params
zh_cn
用於生成密鑰的參數集合。
Throws InvalidAlgorithmParameterException:
zh_cn
如果給定的參數不適合此密鑰對生成器。
since 1.2

 

public void initialize(AlgorithmParameterSpec params, SecureRandom random) throws InvalidAlgorithmParameterException
zh_cn
使用給定參數集合和隨機源初始化密鑰對生成器。

已將此具體方法添加到以前定義的這個抽象類中。此方法調用 KeyPairGeneratorSpi 的 initialize 方法,為它傳遞 paramsrandom。如果沒有被提供者重寫,則該 initialize 方法總是拋出 UnsupportedOperationException。

params
zh_cn
用於生成密鑰的參數集合。
random
zh_cn
隨機源。
Throws InvalidAlgorithmParameterException:
zh_cn
如果給定的參數不適合此密鑰對生成器。
since 1.2

 

 

Properties
public String getAlgorithm()
zh_cn
返回此密鑰對生成器算法的標准名稱。有關標准算法名稱的信息,請參閱 Java Cryptography Architecture API Specification & Reference 中的附錄 A。
return
zh_cn
算法的標准字符串名稱。
 
public static KeyPairGenerator getInstance(String algorithm) throws NoSuchAlgorithmException
zh_cn
返回生成指定算法的 public/private 密鑰對的 KeyPairGenerator 對象。

此方法從首選 Provider 開始遍歷已注冊安全提供者列表。返回封裝 KeyPairGeneratorSpi 實現的新 KeyPairGenerator 對象,該實現取自第一個支持指定算法的 Provider。

注意,可以通過 Security.getProviders() 方法獲取已注冊提供者列表。

algorithm
zh_cn
算法的標准字符串名稱。有關標准算法名稱的信息,請參閱 Java Cryptography Architecture API Specification & Reference 中的附錄 A。
return
zh_cn
新的 KeyPairGenerator 對象。
Throws NoSuchAlgorithmException:
zh_cn
如果沒有 Provider 支持指定算法的 KeyPairGeneratorSpi 實現。
See also java.security.Provider

 

public static KeyPairGenerator getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
zh_cn
返回生成指定算法的 public/private 密鑰對的 KeyPairGenerator 對象。

返回一個封裝 KeyPairGeneratorSpi 實現的新 KeyPairGenerator 對象,該實現取自指定提供者。指定提供者必須在安全提供者列表中注冊。

注意,可以通過 Security.getProviders() 方法獲取已注冊提供者列表。

algorithm
zh_cn
算法的標准字符串名稱。有關標准算法名稱的信息,請參閱 Java Cryptography Architecture API Specification & Reference 中的附錄 A。
provider
zh_cn
提供者的字符串名稱。
return
zh_cn
新的 KeyPairGenerator 對象。
Throws NoSuchAlgorithmException:
zh_cn
如果指定算法的 KeyPairGeneratorSpi 實現不能從指定提供者獲得。
Throws NoSuchProviderException:
zh_cn
如果指定提供者未在安全提供者列表中注冊。
Throws IllegalArgumentException:
zh_cn
如果提供者的名稱為 null 或空。
See also java.security.Provider

 

public static KeyPairGenerator getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
zh_cn
返回生成指定算法的 public/private 密鑰對的 KeyPairGenerator 對象。

返回一個封裝 KeyPairGeneratorSpi 實現的新 KeyPairGenerator 對象,該實現取自指定 Provider 對象。注意,指定 Provider 對象無需在提供者列表中注冊。

algorithm
zh_cn
算法的標准字符串名稱。有關標准算法名稱的信息,請參閱 Java Cryptography Architecture API Specification & Reference 中的附錄 A。
provider
zh_cn
提供者。
return
zh_cn
新的 KeyPairGenerator 對象。
Throws NoSuchAlgorithmException:
zh_cn
如果指定算法的 KeyPairGeneratorSpi 實現不能從指定提供者對象獲得。
Throws IllegalArgumentException:
zh_cn
如果指定提供者為 null。
since 1.4
See also java.security.Provider

 

final public Provider getProvider()
zh_cn
返回此密鑰對生成器對象的提供者。
return
zh_cn
返回此密鑰對生成器對象的提供者


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM