- java.lang.Object
-
- javax.crypto.SecretKeyFactory
-
public class SecretKeyFactory extends Object
这个类代表一个秘密密钥的工厂。主要工厂用于将键 (
Key
型的不透明加密密钥)转换为密钥规范 (基础密钥材料的透明表示),反之亦然。 秘密密钥工厂仅在秘密(对称)密钥上运行。关键工厂是双向的,即它们允许从给定的密钥规范(密钥材料)构建一个不透明的密钥对象,或以适当的格式检索密钥对象的基础密钥材料。
应用程序开发人员应参考其提供商的文档,以了解
generateSecret
和getKeySpec
方法支持哪些关键规范。 例如,由“SunJCE”提供商提供的DES秘密密钥工厂支持DESKeySpec
作为DES密钥的透明表示,该提供商的三重DES密钥密钥工厂支持DESedeKeySpec
作为三重DES密钥的透明表示。Java平台的每个实现都需要支持以下标准的
SecretKeyFactory
算法:-
DES
-
DESede
- 从以下版本开始:
- 1.4
- 另请参见:
-
SecretKey
,DESKeySpec
,DESedeKeySpec
,PBEKeySpec
-
-
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
SecretKeyFactory(SecretKeyFactorySpi keyFacSpi, Provider provider, String algorithm)
创建一个SecretKeyFactory对象。
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 Modifier and Type 方法 描述 SecretKey
generateSecret(KeySpec keySpec)
根据提供的密钥规范(密钥材料)生成一个SecretKey
对象。String
getAlgorithm()
返回此SecretKeyFactory
对象的算法名称。static SecretKeyFactory
getInstance(String algorithm)
返回转换指定算法的密钥的SecretKeyFactory
对象。static SecretKeyFactory
getInstance(String algorithm, String provider)
返回转换指定算法的密钥的SecretKeyFactory
对象。static SecretKeyFactory
getInstance(String algorithm, Provider provider)
返回一个转换指定算法的密钥的SecretKeyFactory
对象。KeySpec
getKeySpec(SecretKey key, Class<?> keySpec)
以请求的格式返回给定键对象的规范(关键材料)。Provider
getProvider()
返回此SecretKeyFactory
对象的提供者。SecretKey
translateKey(SecretKey key)
将其提供者可能未知或可能不受信任的关键对象转换为该秘密密钥工厂的相应密钥对象。
-
-
-
构造方法详细信息
-
SecretKeyFactory
protected SecretKeyFactory(SecretKeyFactorySpi keyFacSpi, Provider provider, String algorithm)
创建一个SecretKeyFactory对象。- 参数
-
keyFacSpi
- 代表 -
provider
- 提供商 -
algorithm
- 秘密密钥算法
-
-
方法详细信息
-
getInstance
public static final SecretKeyFactory getInstance(String algorithm) throws NoSuchAlgorithmException
返回一个转换指定算法的密钥的SecretKeyFactory
对象。此方法遍历已注册的安全提供程序列表,从最优选的提供程序开始。 返回从支持指定算法的第一个Provider中封装SecretKeyFactorySpi实现的新SecretKeyFactory对象。
请注意,可以通过
Security.getProviders()
方法检索注册提供商的列表。- Implementation Note:
-
JDK参考实现另外使用
jdk.security.provider.preferred
Security
属性来确定指定算法的首选提供者顺序。 这可能不同于Security.getProviders()
返回的提供商的顺序 。 - 参数
-
algorithm
- 所请求密钥算法的标准名称。 有关标准算法名称的信息,请参阅Java Security Standard Algorithm Names Specification中的SecretKeyFactory部分。 - 结果
-
新的
SecretKeyFactory
对象 - 异常
-
NoSuchAlgorithmException
Provider
SecretKeyFactorySpi
-
NullPointerException
- 如果algorithm
是null
- 另请参见:
-
Provider
-
getInstance
public static final SecretKeyFactory getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
返回一个转换指定算法的密钥的SecretKeyFactory
对象。返回从指定提供程序封装SecretKeyFactorySpi实现的新SecretKeyFactory对象。 指定的提供者必须在安全提供程序列表中注册。
请注意,可以通过
Security.getProviders()
方法检索注册提供商的列表。- 参数
-
algorithm
- 所请求密钥算法的标准名称。 有关标准算法名称的信息,请参阅Java Security Standard Algorithm Names Specification中的SecretKeyFactory部分。 -
provider
- 提供商的名称。 - 结果
-
新的
SecretKeyFactory
对象 - 异常
-
IllegalArgumentException
- 如果provider
是null
或空 -
NoSuchAlgorithmException
- 如果指定算法的SecretKeyFactorySpi
实现不能从指定的提供者获得 -
NoSuchProviderException
- 如果指定的提供程序未在安全提供程序列表中注册 -
NullPointerException
- 如果algorithm
是null
- 另请参见:
-
Provider
-
getInstance
public static final SecretKeyFactory getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
返回一个转换指定算法的密钥的SecretKeyFactory
对象。返回从指定的Provider对象封装SecretKeyFactorySpi实现的新SecretKeyFactory对象。 请注意,指定的Provider对象不必在提供者列表中注册。
- 参数
-
algorithm
- 所请求密钥算法的标准名称。 有关标准算法名称的信息,请参阅Java Security Standard Algorithm Names Specification中的SecretKeyFactory部分。 -
provider
- 提供商。 - 结果
-
新的
SecretKeyFactory
对象 - 异常
-
IllegalArgumentException
- 如果provider
是null
-
NoSuchAlgorithmException
- 如果指定的算法的SecretKeyFactorySpi
实现不能从指定的Provider
对象获得 -
NullPointerException
- 如果algorithm
是null
- 另请参见:
-
Provider
-
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
- 如果请求的密钥规范对于给定的密钥是不合适的(例如,与key
和keySpec
相关联的算法不匹配,或者key
引用加密硬件设备上的密钥,而keySpec
是基于软件的密钥的规范)或者给定的密钥不能被处理(例如,给定的密钥具有该秘密密钥工厂不支持的算法或格式)。
-
translateKey
public final SecretKey translateKey(SecretKey key) throws InvalidKeyException
将其提供者可能未知或可能不受信任的关键对象转换为该秘密密钥工厂的相应密钥对象。- 参数
-
key
- 提供者未知或不信任的关键 - 结果
- 翻译密钥
- 异常
-
InvalidKeyException
- 如果该密钥工厂无法处理给定的密钥。
-
-