java.lang.Object
javax.crypto.SecretKeyFactory
这个类表示一个密钥工厂。
密钥工厂用于将密钥(类型为Key
的不透明加密密钥)转换为密钥规范(底层密钥材料的透明表示),反之亦然。秘密密钥工厂仅操作秘密(对称)密钥。
密钥工厂是双向的,即它们允许从给定的密钥规范(密钥材料)构建不透明密钥对象,或以适当格式检索密钥对象的底层密钥材料。
应用程序开发人员应参考其提供程序的文档,以了解generateSecret
和getKeySpec
方法支持哪些密钥规范。例如,由"SunJCE"提供程序提供的DESede(Triple DES)秘密密钥工厂支持DESedeKeySpec
作为Triple DES密钥的透明表示。
Java平台的每个实现都必须支持以下标准SecretKeyFactory
算法:
DESede
- 自从:
- 1.4
- 参见:
-
Constructor Summary
ModifierConstructorDescriptionprotected
SecretKeyFactory
(SecretKeyFactorySpi keyFacSpi, Provider provider, String algorithm) 创建一个SecretKeyFactory
对象。 -
Method Summary
Modifier and TypeMethodDescriptionfinal SecretKey
generateSecret
(KeySpec keySpec) 从提供的密钥规范(密钥材料)生成一个SecretKey
对象。final String
返回此SecretKeyFactory
对象的算法名称。static final SecretKeyFactory
getInstance
(String algorithm) 返回一个SecretKeyFactory
对象,用于转换指定算法的秘密密钥。static final SecretKeyFactory
getInstance
(String algorithm, String provider) 返回一个SecretKeyFactory
对象,用于转换指定算法的秘密密钥。static final SecretKeyFactory
getInstance
(String algorithm, Provider provider) 返回一个SecretKeyFactory
对象,用于转换指定算法的秘密密钥。final KeySpec
getKeySpec
(SecretKey key, Class<?> keySpec) 返回所请求格式中给定密钥对象的规范(密钥材料)。final Provider
返回此SecretKeyFactory
对象的提供程序。final SecretKey
translateKey
(SecretKey key) 将一个密钥对象(其提供程序可能未知或潜在不受信任)转换为此秘密密钥工厂的相应密钥对象。
-
Constructor Details
-
SecretKeyFactory
创建一个SecretKeyFactory
对象。- 参数:
-
keyFacSpi
- 代理 -
provider
- 提供程序 -
algorithm
- 秘密密钥算法
-
-
Method Details
-
getInstance
返回一个SecretKeyFactory
对象,用于转换指定算法的秘密密钥。此方法遍历已注册的安全提供程序列表,从最首选的提供程序开始。返回一个新的
SecretKeyFactory
对象,封装了支持指定算法的第一个提供程序的SecretKeyFactorySpi
实现。请注意,已注册提供程序的列表可以通过
Security.getProviders()
方法检索。- 实现注意:
-
JDK参考实现另外使用
jdk.security.provider.preferred
Security
属性来确定指定算法的首选提供程序顺序。这可能与由Security.getProviders()
返回的提供程序顺序不同。 - 参数:
-
algorithm
- 请求的标准密钥算法名称。有关标准算法名称的信息,请参阅 Java安全标准算法名称规范中的SecretKeyFactory部分。 - 返回:
-
新的
SecretKeyFactory
对象 - 抛出:
-
NoSuchAlgorithmException
- 如果没有Provider
支持指定算法的SecretKeyFactorySpi
实现 -
NullPointerException
- 如果algorithm
为null
- 参见:
-
getInstance
public static final SecretKeyFactory getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException 返回一个SecretKeyFactory
对象,用于转换指定算法的秘密密钥。返回一个新的
SecretKeyFactory
对象,封装了指定提供程序的SecretKeyFactorySpi
实现。指定的提供程序必须在安全提供程序列表中注册。请注意,已注册提供程序的列表可以通过
Security.getProviders()
方法检索。- 参数:
-
algorithm
- 请求的标准密钥算法名称。有关标准算法名称的信息,请参阅 Java安全标准算法名称规范中的SecretKeyFactory部分。 -
provider
- 提供程序的名称。 - 返回:
-
新的
SecretKeyFactory
对象 - 抛出:
-
IllegalArgumentException
- 如果provider
为null
或为空 -
NoSuchAlgorithmException
- 如果指定提供程序中不可用指定算法的SecretKeyFactorySpi
实现 -
NoSuchProviderException
- 如果指定提供程序未在安全提供程序列表中注册 -
NullPointerException
- 如果algorithm
为null
- 参见:
-
getInstance
public static final SecretKeyFactory getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException 返回一个SecretKeyFactory
对象,用于转换指定算法的秘密密钥。返回一个新的
SecretKeyFactory
对象,封装了指定提供程序对象的SecretKeyFactorySpi
实现。请注意,指定的提供程序对象不必在提供程序列表中注册。- 参数:
-
algorithm
- 请求的标准密钥算法名称。有关标准算法名称的信息,请参阅 Java安全标准算法名称规范中的SecretKeyFactory部分。 -
provider
- 提供程序。 - 返回:
-
新的
SecretKeyFactory
对象 - 抛出:
-
IllegalArgumentException
- 如果provider
为null
-
NoSuchAlgorithmException
- 如果指定Provider
对象中不可用指定算法的SecretKeyFactorySpi
实现 -
NullPointerException
- 如果algorithm
为null
- 参见:
-
getProvider
返回此SecretKeyFactory
对象的提供程序。- 返回:
-
此
SecretKeyFactory
对象的提供程序
-
getAlgorithm
返回此SecretKeyFactory
对象的算法名称。这是在创建此
SecretKeyFactory
对象的getInstance
调用中指定的相同名称。- 返回:
-
此
SecretKeyFactory
对象的算法名称。
-
generateSecret
从提供的密钥规范(密钥材料)生成一个SecretKey
对象。- 参数:
-
keySpec
- 密钥的规范(密钥材料) - 返回:
- 密钥
- 抛出:
-
InvalidKeySpecException
- 如果给定的密钥规范不适合此秘密密钥工厂生成一个密钥。
-
getKeySpec
返回所请求格式中给定密钥对象的规范(密钥材料)。- 参数:
-
key
- 密钥 -
keySpec
- 应返回密钥材料的请求格式 - 返回:
- 所请求格式中的底层密钥规范(密钥材料)
- 抛出:
-
InvalidKeySpecException
- 如果请求的密钥规范不适合给定的密钥(例如,与key
和keySpec
关联的算法不匹配,或key
引用加密硬件设备上的密钥,而keySpec
是软件密钥的规范,或给定的密钥无法处理(例如,给定的密钥具有此秘密密钥工厂不支持的算法或格式)。
-
translateKey
将一个密钥对象(其提供者可能未知或潜在不受信任)转换为此秘密密钥工厂的相应密钥对象。- 参数:
-
key
- 提供者未知或不受信任的密钥 - 返回:
- 转换后的密钥
- 抛出:
-
InvalidKeyException
- 如果给定的密钥无法被此秘密密钥工厂处理。
-