使用豁免机制的应用程序或小程序可能会获得比不使用的应用程序更强的加密能力。
- 自JDK版本:
- 1.4
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedExemptionMechanism(ExemptionMechanismSpi exmechSpi, Provider provider, String mechanism) 创建一个ExemptionMechanism对象。 -
Method Summary
Modifier and TypeMethodDescriptionfinal byte[]生成豁免机制密钥 blob。final intgenExemptionBlob(byte[] output) 生成豁免机制密钥 blob,并将结果存储在output缓冲区中。final intgenExemptionBlob(byte[] output, int outputOffset) 生成豁免机制密钥 blob,并将结果存储在output缓冲区中,从outputOffset开始(包括outputOffset)。static final ExemptionMechanismgetInstance(String algorithm) 返回一个实现指定豁免机制算法的ExemptionMechanism对象。static final ExemptionMechanismgetInstance(String algorithm, String provider) 返回一个实现指定豁免机制算法的ExemptionMechanism对象。static final ExemptionMechanismgetInstance(String algorithm, Provider provider) 返回一个实现指定豁免机制算法的ExemptionMechanism对象。final StringgetName()返回此ExemptionMechanism对象的豁免机制名称。final intgetOutputSize(int inputLen) 返回下一个genExemptionBlob操作的结果需要的输出缓冲区长度(以字节为单位),给定输入长度inputLen(以字节为单位)。final Provider返回此ExemptionMechanism对象的提供者。final void使用密钥初始化此豁免机制。final voidinit(Key key, AlgorithmParameters params) 使用密钥和一组算法参数初始化此豁免机制。final voidinit(Key key, AlgorithmParameterSpec params) 使用密钥和一组算法参数初始化此豁免机制。final booleanisCryptoAllowed(Key key) 返回此豁免机制是否成功生成结果 blob。
-
Constructor Details
-
ExemptionMechanism
创建一个ExemptionMechanism对象。- 参数:
-
exmechSpi- 代理 -
provider- 提供者 -
mechanism- 豁免机制
-
-
Method Details
-
getName
返回此ExemptionMechanism对象的豁免机制名称。这是在创建此
ExemptionMechanism对象的getInstance调用中指定的相同名称。- 返回:
-
此
ExemptionMechanism对象的豁免机制名称。
-
getInstance
public static final ExemptionMechanism getInstance(String algorithm) throws NoSuchAlgorithmException 返回一个实现指定豁免机制算法的ExemptionMechanism对象。此方法遍历已注册的安全提供者列表,从最首选的提供者开始。返回一个新的
ExemptionMechanism对象,封装了第一个支持指定算法的提供者的ExemptionMechanismSpi实现。请注意,已注册提供者的列表可以通过
Security.getProviders()方法检索。- 实现说明:
-
JDK参考实现还使用
jdk.security.provider.preferredSecurity属性来确定指定算法的首选提供者顺序。这可能与Security.getProviders()返回的提供者顺序不同。 - 参数:
-
algorithm- 请求的豁免机制的标准名称。有关标准豁免机制名称的信息,请参阅Java安全标准算法名称规范中的豁免机制部分。 - 返回:
-
新的
ExemptionMechanism对象 - 抛出:
-
NoSuchAlgorithmException- 如果没有Provider支持指定算法的ExemptionMechanismSpi实现 -
NullPointerException- 如果algorithm为null - 参见:
-
getInstance
public static final ExemptionMechanism getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException 返回一个实现指定豁免机制算法的ExemptionMechanism对象。返回一个新的
ExemptionMechanism对象,封装了指定提供者的ExemptionMechanismSpi实现。指定的提供者必须在安全提供者列表中注册。请注意,已注册提供者的列表可以通过
Security.getProviders()方法检索。- 参数:
-
algorithm- 请求的豁免机制的标准名称。有关标准豁免机制名称的信息,请参阅Java安全标准算法名称规范中的豁免机制部分。 -
provider- 提供者的名称。 - 返回:
-
新的
ExemptionMechanism对象 - 抛出:
-
IllegalArgumentException- 如果provider为null或空 -
NoSuchAlgorithmException- 如果指定提供者中不可用指定算法的ExemptionMechanismSpi实现 -
NoSuchProviderException- 如果指定提供者未在安全提供者列表中注册 -
NullPointerException- 如果algorithm为null - 参见:
-
getInstance
public static final ExemptionMechanism getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException 返回一个实现指定豁免机制算法的ExemptionMechanism对象。返回一个新的
ExemptionMechanism对象,封装了指定提供者对象的ExemptionMechanismSpi实现。请注意,指定的提供者对象不必在提供者列表中注册。- 参数:
-
algorithm- 请求的豁免机制的标准名称。有关标准豁免机制名称的信息,请参阅Java安全标准算法名称规范中的豁免机制部分。 -
provider- 提供者。 - 返回:
-
新的
ExemptionMechanism对象 - 抛出:
-
IllegalArgumentException- 如果provider为null -
NoSuchAlgorithmException- 如果指定Provider对象中不可用指定算法的ExemptionMechanismSpi实现 -
NullPointerException- 如果algorithm为null - 参见:
-
getProvider
返回此ExemptionMechanism对象的提供者。- 返回:
-
此
ExemptionMechanism对象的提供者。
-
isCryptoAllowed
返回此豁免机制是否成功生成结果 blob。该方法还确保传入的密钥与此豁免机制在初始化和生成阶段中使用的密钥相同。
- 参数:
-
key- 加密将要使用的密钥。 - 返回:
-
是否此豁免机制成功生成相同密钥的结果 blob;如果
key为null,则返回false。 - 抛出:
-
ExemptionMechanismException- 如果在确定此豁免机制对象是否成功生成结果 blob 时遇到问题。
-
getOutputSize
返回下一个genExemptionBlob操作的结果需要的输出缓冲区长度(以字节为单位),给定输入长度inputLen(以字节为单位)。下一个
genExemptionBlob调用的实际输出长度可能小于此方法返回的长度。- 参数:
-
inputLen- 输入长度(以字节为单位) - 返回:
- 所需的输出缓冲区大小(以字节为单位)
- 抛出:
-
IllegalStateException- 如果此豁免机制处于错误状态(例如,尚未初始化)
-
init
使用密钥初始化此豁免机制。如果此豁免机制需要无法从给定
key派生的任何算法参数,底层豁免机制实现应该自动生成所需的参数(使用特定于提供者的默认值);如果算法参数必须由调用者指定,则会引发InvalidKeyException。- 参数:
-
key- 此豁免机制的密钥 - 抛出:
-
InvalidKeyException- 如果给定的密钥不适用于此豁免机制。 -
ExemptionMechanismException- 如果在初始化过程中遇到问题。
-
init
public final void init(Key key, AlgorithmParameterSpec params) throws InvalidKeyException, InvalidAlgorithmParameterException, ExemptionMechanismException 使用密钥和一组算法参数初始化此豁免机制。如果此豁免机制需要任何算法参数,并且
params为null,则底层豁免机制实现应自动生成所需参数(使用特定于提供程序的默认值);如果算法参数必须由调用者指定,则会引发InvalidAlgorithmParameterException。- 参数:
-
key- 此豁免机制的密钥 -
params- 算法参数 - 抛出:
-
InvalidKeyException- 如果给定的密钥不适用于此豁免机制。 -
InvalidAlgorithmParameterException- 如果给定的算法参数不适用于此豁免机制。 -
ExemptionMechanismException- 如果在初始化过程中遇到问题。
-
init
public final void init(Key key, AlgorithmParameters params) throws InvalidKeyException, InvalidAlgorithmParameterException, ExemptionMechanismException 使用密钥和一组算法参数初始化此豁免机制。如果此豁免机制需要任何算法参数,并且
params为null,则底层豁免机制实现应自动生成所需参数(使用特定于提供程序的默认值);如果算法参数必须由调用者指定,则会引发InvalidAlgorithmParameterException。- 参数:
-
key- 此豁免机制的密钥 -
params- 算法参数 - 抛出:
-
InvalidKeyException- 如果给定的密钥不适用于此豁免机制。 -
InvalidAlgorithmParameterException- 如果给定的算法参数不适用于此豁免机制。 -
ExemptionMechanismException- 如果在初始化过程中遇到问题。
-
genExemptionBlob
生成豁免机制密钥数据块。- 返回:
- 包含结果密钥数据块的新缓冲区。
- 抛出:
-
IllegalStateException- 如果此豁免机制处于错误状态(例如,尚未初始化)。 -
ExemptionMechanismException- 如果在生成过程中遇到问题。
-
genExemptionBlob
public final int genExemptionBlob(byte[] output) throws IllegalStateException, ShortBufferException, ExemptionMechanismException 生成豁免机制密钥数据块,并将结果存储在output缓冲区中。如果
output缓冲区太小无法容纳结果,则会抛出ShortBufferException。在这种情况下,请使用更大的输出缓冲区重复此调用。使用getOutputSize确定输出缓冲区应有多大。- 参数:
-
output- 结果的缓冲区 - 返回:
-
存储在
output中的字节数 - 抛出:
-
IllegalStateException- 如果此豁免机制处于错误状态(例如,尚未初始化)。 -
ShortBufferException- 如果给定的输出缓冲区太小无法容纳结果。 -
ExemptionMechanismException- 如果在生成过程中遇到问题。
-
genExemptionBlob
public final int genExemptionBlob(byte[] output, int outputOffset) throws IllegalStateException, ShortBufferException, ExemptionMechanismException 生成豁免机制密钥数据块,并将结果存储在output缓冲区中,从outputOffset开始(包括在内)。如果
output缓冲区太小无法容纳结果,则会抛出ShortBufferException。在这种情况下,请使用更大的输出缓冲区重复此调用。使用getOutputSize确定输出缓冲区应有多大。- 参数:
-
output- 结果的缓冲区 -
outputOffset- 存储结果的output中的偏移量 - 返回:
-
存储在
output中的字节数 - 抛出:
-
IllegalStateException- 如果此豁免机制处于错误状态(例如,尚未初始化)。 -
ShortBufferException- 如果给定的输出缓冲区太小无法容纳结果。 -
ExemptionMechanismException- 如果在生成过程中遇到问题。
-