JavaTM 2 Platform
Standard Ed. 5.0

javax.crypto
类 SecretKeyFactory

java.lang.Object
  继承者 javax.crypto.SecretKeyFactory

public class SecretKeyFactory
extends Object

此类表示秘密密钥的工厂。

密钥工厂用来将密钥(类型 Key 的不透明加密密钥)转换为密钥规范(基础密钥材料的透明表示形式),反之亦然。秘密密钥工厂只对秘密(对称)密钥进行操作。

密钥工厂为双工模式,即其允许根据给定密钥规范(密钥材料)构建不透明密钥对象,或以适当格式检索密钥对象的基础密钥材料。

应用程序开发人员应参阅其提供程序的文档,找出 generateSecretgetKeySpec 方法支持的密钥规范。例如,"SunJCE" 提供程序提供的 DES 秘密密钥工厂支持 DESKeySpec 作为 DES 密钥的透明表示形式,并且该提供程序的 Triple DES 密钥的秘密密钥工厂支持 DESedeKeySpec 作为 Triple DES 密钥的透明表示形式。

从以下版本开始:
1.4
另请参见:
SecretKey, DESKeySpec, DESedeKeySpec, PBEKeySpec

构造方法摘要
protected SecretKeyFactory(SecretKeyFactorySpi keyFacSpi, Provider provider, String algorithm)
          创建一个 SecretKeyFactory 对象。
 
方法摘要
 SecretKey generateSecret(KeySpec keySpec)
          根据提供的密钥规范(密钥材料)生成 SecretKey 对象。
 String getAlgorithm()
          返回此 SecretKeyFactory 对象的算法名称。
static SecretKeyFactory getInstance(String algorithm)
          生成指定秘密密钥算法的 SecretKeyFactory 对象。
static SecretKeyFactory getInstance(String algorithm, Provider provider)
          根据指定的提供程序生成指定秘密密钥算法的 SecretKeyFactory
static SecretKeyFactory getInstance(String algorithm, String provider)
          根据指定的提供程序生成指定秘密密钥算法的 SecretKeyFactory
 KeySpec getKeySpec(SecretKey key, Class keySpec)
          以请求的格式返回给定密钥对象的规范(密钥材料)。
 Provider getProvider()
          返回此 SecretKeyFactory 对象的提供程序。
 SecretKey translateKey(SecretKey key)
          将一个密钥对象(其提供程序未知或可能不受信任)转换为此密钥工厂的相应密钥对象。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

SecretKeyFactory

protected SecretKeyFactory(SecretKeyFactorySpi keyFacSpi,
                           Provider provider,
                           String algorithm)
创建一个 SecretKeyFactory 对象。

参数:
keyFacSpi - 委托
provider - 提供程序
algorithm - 秘密密钥算法
方法详细信息

getInstance

public static final SecretKeyFactory getInstance(String algorithm)
                                          throws NoSuchAlgorithmException
生成指定秘密密钥算法的 SecretKeyFactory 对象。如果默认提供程序包提供请求工厂的实现,则返回包含该实现的一个 SecretKeyFactory 实例。如果默认的提供程序包中不存在请求的工厂,则将搜索其他提供程序包。

参数:
algorithm - 请求的秘密密钥算法的标准名称。有关标准算法名称的信息,请参阅《Java Cryptography Extension Reference Guide》中的附录 A。
返回:
指定密钥算法的 SecretKeyFactory 对象。
抛出:
NullPointerException - 如果指定的算法为 null。
NoSuchAlgorithmException - 如果默认提供程序包中或搜索到的任何其他提供程序包中不存在指定算法的秘密密钥工厂。

getInstance

public static final SecretKeyFactory getInstance(String algorithm,
                                                 String provider)
                                          throws NoSuchAlgorithmException,
                                                 NoSuchProviderException
根据指定的提供程序生成指定秘密密钥算法的 SecretKeyFactory

参数:
algorithm - 请求的秘密密钥算法的标准名称。有关标准算法名称的信息,请参阅《Java Cryptography Extension Reference Guide》中的附录 A。
provider - 提供程序的名称。
返回:
指定密钥算法的 SecretKeyFactory 对象。
抛出:
NoSuchAlgorithmException - 如果指定算法的秘密密钥工厂在指定的提供程序中不可用。
NullPointerException - 如果指定的算法为 null。
NoSuchProviderException - 如果指定的提供程序未配置。
IllegalArgumentException - 如果 provider 为 null。

getInstance

public static final SecretKeyFactory getInstance(String algorithm,
                                                 Provider provider)
                                          throws NoSuchAlgorithmException
根据指定的提供程序生成指定秘密密钥算法的 SecretKeyFactory。注:provider 不一定都需要注册。

参数:
algorithm - 请求的秘密密钥算法的标准名称。有关标准算法名称的信息,请参阅《Java Cryptography Extension Reference Guide》中的附录 A。
provider - 提供程序。
返回:
指定密钥算法的 SecretKeyFactory 对象。
抛出:
NullPointerException - 如果指定的算法为 null。
NoSuchAlgorithmException - 如果指定算法的秘密密钥工厂在指定的提供程序中不可用。
IllegalArgumentException - 如果 provider 为 null。

getProvider

public final Provider getProvider()
返回此 SecretKeyFactory 对象的提供程序。

返回:
SecretKeyFactory 对象的提供程序

getAlgorithm

public final String getAlgorithm()
返回此 SecretKeyFactory 对象的算法名称。

此名称与在某个创建此 SecretKeyFactory 对象的 getInstance 调用中指定的名称相同。

返回:
SecretKeyFactory 对象的算法名称。

generateSecret

public final SecretKey generateSecret(KeySpec keySpec)
                               throws InvalidKeySpecException
根据提供的密钥规范(密钥材料)生成 SecretKey 对象。

参数:
keySpec - 秘密密钥的规范(密钥材料)
返回:
秘密密钥
抛出:
InvalidKeySpecException - 如果给定密钥规范不适合生成秘密密钥的秘密密钥工厂。

getKeySpec

public final KeySpec getKeySpec(SecretKey key,
                                Class keySpec)
                         throws InvalidKeySpecException
以请求的格式返回给定密钥对象的规范(密钥材料)。

参数:
key - 密钥
keySpec - 所需的格式,密钥材料将以这种格式返回
返回:
以所需格式返回基础密钥规范(密钥材料)
抛出:
InvalidKeySpecException - 如果所需密钥规范不适合给定的密钥(例如,与 keykeySpec 相关的算法不匹配,或者 key 在加密硬件设备上引用一个密钥而 keySpec 是基于软件的密钥规范),或者无法处理给定的密钥(例如,给定的密钥具有此秘密密钥工厂不支持的算法或格式)。

translateKey

public final SecretKey translateKey(SecretKey key)
                             throws InvalidKeyException
将一个密钥对象(其提供程序未知或可能不受信任)转换为此密钥工厂的相应密钥对象。

参数:
key - 其提供程序未知或不受信任的密钥
返回:
已转换的密钥
抛出:
InvalidKeyException - 如果此秘密密钥工厂无法处理给定的密钥。

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策