使用豁免机制的应用程序或小程序可能会获得比不使用的应用程序更强的加密能力。
- 自JDK版本:
- 1.4
-
Constructor Summary
ModifierConstructorDescriptionprotected
ExemptionMechanism
(ExemptionMechanismSpi exmechSpi, Provider provider, String mechanism) 创建一个ExemptionMechanism
对象。 -
Method Summary
Modifier and TypeMethodDescriptionfinal byte[]
生成豁免机制密钥 blob。final int
genExemptionBlob
(byte[] output) 生成豁免机制密钥 blob,并将结果存储在output
缓冲区中。final int
genExemptionBlob
(byte[] output, int outputOffset) 生成豁免机制密钥 blob,并将结果存储在output
缓冲区中,从outputOffset
开始(包括outputOffset
)。static final ExemptionMechanism
getInstance
(String algorithm) 返回一个实现指定豁免机制算法的ExemptionMechanism
对象。static final ExemptionMechanism
getInstance
(String algorithm, String provider) 返回一个实现指定豁免机制算法的ExemptionMechanism
对象。static final ExemptionMechanism
getInstance
(String algorithm, Provider provider) 返回一个实现指定豁免机制算法的ExemptionMechanism
对象。final String
getName()
返回此ExemptionMechanism
对象的豁免机制名称。final int
getOutputSize
(int inputLen) 返回下一个genExemptionBlob
操作的结果需要的输出缓冲区长度(以字节为单位),给定输入长度inputLen
(以字节为单位)。final Provider
返回此ExemptionMechanism
对象的提供者。final void
使用密钥初始化此豁免机制。final void
init
(Key key, AlgorithmParameters params) 使用密钥和一组算法参数初始化此豁免机制。final void
init
(Key key, AlgorithmParameterSpec params) 使用密钥和一组算法参数初始化此豁免机制。final boolean
isCryptoAllowed
(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.preferred
Security
属性来确定指定算法的首选提供者顺序。这可能与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
- 如果在生成过程中遇到问题。
-