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