JavaTM 2 Platform
Standard Ed. 6

java.security
類別 KeyFactory

java.lang.Object
  繼承者 java.security.KeyFactory

public class KeyFactory
extends Object

密鑰處理器用於將密鑰Key 型別的不透明加密密鑰)轉換成密鑰規範(底層密鑰材料的透明表示),反之亦然。

密鑰處理器是雙向的。也就是說,它們允許根據給定的密鑰規範(密鑰材料)建構不透明的密鑰物件,也允許獲取以恰當格式表示的密鑰物件的底層密鑰材料。

對於同一個密鑰可以存在多個相容的密鑰規範。例如,可以使用 DSAPublicKeySpecX509EncodedKeySpec 指定 DSA 公鑰。密鑰處理器可用於相容密鑰規範之間的轉換。

以下是一個如何使用密鑰處理器根據其編碼實例化 DSA 公鑰的範例。假定 Alice 收到了 Bob 的數位簽章。Bob 也向她發送其公鑰(以編碼的格式)來驗證他的簽章。然後 Alice 執行以下操作:

 X509EncodedKeySpec bobPubKeySpec = new X509EncodedKeySpec(bobEncodedPubKey);
 KeyFactory keyFactory = KeyFactory.getInstance("DSA");
 PublicKey bobPubKey = keyFactory.generatePublic(bobPubKeySpec);
 Signature sig = Signature.getInstance("DSA");
 sig.initVerify(bobPubKey);
 sig.update(data);
 sig.verify(signature);
 

從以下版本開始:
1.2
另請參見:
Key, PublicKey, PrivateKey, KeySpec, DSAPublicKeySpec, X509EncodedKeySpec

建構子摘要
protected KeyFactory(KeyFactorySpi keyFacSpi, Provider provider, String algorithm)
          創建一個 KeyFactory 物件。
 
方法摘要
 PrivateKey generatePrivate(KeySpec keySpec)
          根據提供的密鑰規範(密鑰材料)產生私鑰物件。
 PublicKey generatePublic(KeySpec keySpec)
          根據提供的密鑰規範(密鑰材料)產生公鑰物件。
 String getAlgorithm()
          獲取與此 KeyFactory 關聯的演算法的名稱。
static KeyFactory getInstance(String algorithm)
          返回轉換指定演算法的 public/private 關鍵字的 KeyFactory 物件。
static KeyFactory getInstance(String algorithm, Provider provider)
          返回轉換指定演算法的 public/private 關鍵字的 KeyFactory 物件。
static KeyFactory getInstance(String algorithm, String provider)
          返回轉換指定演算法的 public/private 關鍵字的 KeyFactory 物件。
<T extends KeySpec>
T
getKeySpec(Key key, Class<T> keySpec)
          返回給定密鑰物件的規範(密鑰材料)。
 Provider getProvider()
          返回此密鑰處理器物件的提供者。
 Key translateKey(Key key)
          將提供者可能未知或不受信任的密鑰物件轉換成此密鑰處理器對應的密鑰物件。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

KeyFactory

protected KeyFactory(KeyFactorySpi keyFacSpi,
                     Provider provider,
                     String algorithm)
創建一個 KeyFactory 物件。

參數:
keyFacSpi - 代理
provider - 提供者
algorithm - 與此 KeyFactory 關聯的演算法名稱
方法詳細資訊

getInstance

public static KeyFactory getInstance(String algorithm)
                              throws NoSuchAlgorithmException
返回轉換指定演算法的 public/private 關鍵字的 KeyFactory 物件。

此方法從首選 Provider 開始遍歷已註冊安全提供者列表。返回一個封裝 KeyFactorySpi 實作的新 KeyFactory 物件,該實作取自第一個支持指定演算法的 Provider。

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

參數:
algorithm - 請求密鑰演算法的名稱。有關標準演算法名稱的資訊,請參閱 Java Cryptography Architecture API Specification & Reference 中的附錄 A。
返回:
新的 KeyFactory 物件。
拋出:
NoSuchAlgorithmException - 如果沒有 Provider 支持指定演算法的 KeyFactorySpi 實作。
另請參見:
Provider

getInstance

public static KeyFactory getInstance(String algorithm,
                                     String provider)
                              throws NoSuchAlgorithmException,
                                     NoSuchProviderException
返回轉換指定演算法的 public/private 關鍵字的 KeyFactory 物件。

返回一個封裝 KeyFactorySpi 實作的新 KeyFactory 物件,該實作取自指定提供者。指定提供者必須在安全提供者列表中註冊。

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

參數:
algorithm - 請求密鑰演算法的名稱。有關標準演算法名稱的資訊,請參閱 Java Cryptography Architecture API Specification & Reference 中的附錄 A。
provider - 提供者的名稱。
返回:
新的 KeyFactory 物件。
拋出:
NoSuchAlgorithmException - 如果不能從指定提供者獲得指定演算法的 KeyFactorySpi 實作。
NoSuchProviderException - 如果指定提供者未在安全提供者列表中註冊。
IllegalArgumentException - 如果提供者的名稱為 null 或空。
另請參見:
Provider

getInstance

public static KeyFactory getInstance(String algorithm,
                                     Provider provider)
                              throws NoSuchAlgorithmException
返回轉換指定演算法的 public/private 關鍵字的 KeyFactory 物件。

返回一個封裝 KeyFactorySpi 實作的新 KeyFactory 物件,該實作取自指定 Provider 物件。注意,指定 Provider 物件無需在提供者列表中註冊。

參數:
algorithm - 請求密鑰演算法的名稱。有關標準演算法名稱的資訊,請參閱 Java Cryptography Architecture API Specification & Reference 中的附錄 A。
provider - 提供者。
返回:
新的 KeyFactory 物件。
拋出:
NoSuchAlgorithmException - 如果不能從指定 Provider 物件獲得指定演算法的 KeyFactorySpi 實作。
IllegalArgumentException - 如果指定提供者為 null。
從以下版本開始:
1.4
另請參見:
Provider

getProvider

public final Provider getProvider()
返回此密鑰處理器物件的提供者。

返回:
此密鑰處理器物件的提供者。

getAlgorithm

public final String getAlgorithm()
獲取與此 KeyFactory 關聯的演算法的名稱。

返回:
與此 KeyFactory 關聯的演算法的名稱。

generatePublic

public final PublicKey generatePublic(KeySpec keySpec)
                               throws InvalidKeySpecException
根據提供的密鑰規範(密鑰材料)產生公鑰物件。

參數:
keySpec - 公鑰的規範(密鑰材料)。
返回:
公鑰。
拋出:
InvalidKeySpecException - 如果給定的密鑰規範不適合此密鑰處理器產生公鑰。

generatePrivate

public final PrivateKey generatePrivate(KeySpec keySpec)
                                 throws InvalidKeySpecException
根據提供的密鑰規範(密鑰材料)產生私鑰物件。

參數:
keySpec - 私鑰的規範(密鑰材料)。
返回:
私鑰。
拋出:
InvalidKeySpecException - 如果給定的密鑰規範不適合此密鑰處理器產生私鑰。

getKeySpec

public final <T extends KeySpec> T getKeySpec(Key key,
                                              Class<T> keySpec)
                                   throws InvalidKeySpecException
返回給定密鑰物件的規範(密鑰材料)。keySpec 標識應接受返回密鑰材料的規範類別。例如,它可能是 DSAPublicKeySpec.class,指示密鑰材料應該返回到 DSAPublicKeySpec 類別的一個實例中。

參數:
key - 密鑰。
keySpec - 應接受返回密鑰材料的規範類別。
返回:
請求規範類別實例中的底層密鑰規範(密鑰材料)。
拋出:
InvalidKeySpecException - 如果請求的密鑰規範不適合給定密鑰,或無法處理給定密鑰(例如,給定密鑰具有不能識別的演算法或格式)。

translateKey

public final Key translateKey(Key key)
                       throws InvalidKeyException
將提供者可能未知或不受信任的密鑰物件轉換成此密鑰處理器對應的密鑰物件。

參數:
key - 提供者未知或不受信任的密鑰物件。
返回:
已轉換的密鑰。
拋出:
InvalidKeyException - 如果此密鑰處理器無法處理給定密鑰。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only