- java.lang.Object
 -  
      
- javax.crypto.ExemptionMechanism
 
 
-  
       
public class ExemptionMechanism extends Object
此类提供免除机制的功能,其示例包括密钥恢复 , 密钥弱化和密钥托管 。使用免除机制的应用程序或小程序可以被授予比不使用免除机制的应用程序或小程序更强的加密功能
- 从以下版本开始:
 - 1.4
 
 
-  
        
       
-  
             
构造方法摘要
构造方法 变量 构造器 描述 protectedExemptionMechanism(ExemptionMechanismSpi exmechSpi, Provider provider, String mechanism)创建ExemptionMechanism对象。 
-  
             
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 byte[]genExemptionBlob()生成豁免机制密钥blob。intgenExemptionBlob(byte[] output)生成豁免机制密钥blob,并将结果存储在output缓冲区中。intgenExemptionBlob(byte[] output, int outputOffset)生成豁免机制密钥blob,并将结果存储在output缓冲区中,从outputOffset开始。static ExemptionMechanismgetInstance(String algorithm)返回实现指定的免除机制算法的ExemptionMechanism对象。static ExemptionMechanismgetInstance(String algorithm, String provider)返回实现指定的免除机制算法的ExemptionMechanism对象。static ExemptionMechanismgetInstance(String algorithm, Provider provider)返回实现指定的免除机制算法的ExemptionMechanism对象。StringgetName()返回此ExemptionMechanism对象的免除机制名称。intgetOutputSize(int inputLen)返回输出缓冲区为了保存下一个genExemptionBlob操作的结果所需的长度(以字节为单位),给定输入长度为inputLen(以字节为单位)。ProvidergetProvider()返回此ExemptionMechanism对象的提供者。voidinit(Key key)使用密钥初始化此豁免机制。voidinit(Key key, AlgorithmParameters params)使用密钥和一组算法参数初始化此免除机制。voidinit(Key key, AlgorithmParameterSpec params)使用密钥和一组算法参数初始化此免除机制。booleanisCryptoAllowed(Key key)返回此豁免机制是否已成功生成结果blob。 
 -  
             
 
-  
        
       
-  
             
构造方法详细信息
-  
ExemptionMechanism
protected ExemptionMechanism(ExemptionMechanismSpi exmechSpi, Provider provider, String mechanism)
创建ExemptionMechanism对象。- 参数
 -  
              
exmechSpi- 代表 -  
              
provider- 提供者 -  
              
mechanism- 豁免机制 
 
 -  
 
-  
             
方法详细信息
-  
getName
public final String getName()
返回此ExemptionMechanism对象的免除机制名称。这与在创建此
ExemptionMechanism对象的getInstance调用之一中指定的名称相同。- 结果
 - 
               此 
              
ExemptionMechanism对象的免除机制名称。 
 
-  
getInstance
public static final ExemptionMechanism getInstance(String algorithm) throws NoSuchAlgorithmException
返回实现指定的免除机制算法的ExemptionMechanism对象。此方法遍历已注册的安全提供程序列表,从最首选的提供程序开始。 将返回一个新的ExemptionMechanism对象,该对象封装了支持指定算法的第一个Provider的ExemptionMechanismSpi实现。
请注意,可以通过
Security.getProviders()方法检索已注册提供商的列表。- Implementation Note:
 -  
              JDK Reference Implementation还使用
jdk.security.provider.preferredSecurity属性来确定指定算法的首选提供程序顺序。 这可能与Security.getProviders()返回的提供商的顺序不同。 - 参数
 -  
              
algorithm- 请求的豁免机制的标准名称。 有关标准豁免机制名称的信息,请参阅Java Security Standard Algorithm Names Specification中的ExemptionMechanism部分。 - 结果
 - 
               新的 
              
ExemptionMechanism对象 - 异常
 -  
              
NoSuchAlgorithmException- 如果没有Provider支持指定算法的ExemptionMechanismSpi实现 -  
              
NullPointerException- 如果algorithm是null - 另请参见:
 -  
              
Provider 
 
-  
getInstance
public static final ExemptionMechanism getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
返回实现指定的免除机制算法的ExemptionMechanism对象。将返回一个新的ExemptionMechanism对象,该对象封装了指定提供程序中的ExemptionMechanismSpi实现。 必须在安全提供程序列表中注册指定的提供程序。
请注意,可以通过
Security.getProviders()方法检索已注册提供商的列表。- 参数
 -  
              
algorithm- 请求的豁免机制的标准名称。 有关标准豁免机制名称的信息,请参阅Java Security Standard Algorithm Names Specification中的ExemptionMechanism部分。 -  
              
provider- 提供者的名称。 - 结果
 - 
               新的 
              
ExemptionMechanism对象 - 异常
 -  
              
IllegalArgumentException- 如果provider是null或为空 -  
              
NoSuchAlgorithmException- 如果指定提供程序的指定算法的ExemptionMechanismSpi实现不可用 -  
              
NoSuchProviderException- 如果指定的提供程序未在安全提供程序列表中注册 -  
              
NullPointerException- 如果algorithm是null - 另请参见:
 -  
              
Provider 
 
-  
getInstance
public static final ExemptionMechanism getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
返回实现指定的免除机制算法的ExemptionMechanism对象。将返回一个新的ExemptionMechanism对象,该对象封装了指定Provider对象的ExemptionMechanismSpi实现。 请注意,指定的Provider对象不必在提供程序列表中注册。
- 参数
 -  
              
algorithm- 请求的豁免机制的标准名称。 有关标准豁免机制名称的信息,请参阅Java Security Standard Algorithm Names Specification中的ExemptionMechanism部分。 -  
              
provider- 提供者。 - 结果
 - 
               新的 
              
ExemptionMechanism对象 - 异常
 -  
              
IllegalArgumentException- 如果provider为空 -  
              
NoSuchAlgorithmException- 如果指定的算法的ExemptionMechanismSpi实现不可用于指定的Provider object -  
              
NullPointerException- 如果algorithm是null - 另请参见:
 -  
              
Provider 
 
-  
getProvider
public final Provider getProvider()
返回此ExemptionMechanism对象的提供程序。- 结果
 - 
               这个 
              
ExemptionMechanism对象的提供者。 
 
-  
isCryptoAllowed
public final boolean isCryptoAllowed(Key key) throws ExemptionMechanismException
返回此豁免机制是否已成功生成结果blob。该方法还确保传入的密钥与初始化和生成阶段中使用的该豁免机制相同。
- 参数
 -  
              
key- 加密将使用的密钥。 - 结果
 -  
              是否通过此豁免机制成功生成了同一密钥的结果blob; 
              如果
key为null,则keyfalse。 - 异常
 -  
              
ExemptionMechanismException- 如果在确定此豁免机制对象是否已成功生成结果blob时遇到问题。 
 
-  
getOutputSize
public final int getOutputSize(int inputLen) throws IllegalStateException在给定输入长度inputLen(以字节为单位)的情况下,返回输出缓冲区为保存下一个genExemptionBlob操作的结果所需的长度(以字节为单位)。下一次
genExemptionBlob调用的实际输出长度可能小于此方法返回的长度。- 参数
 -  
              
inputLen- 输入长度(以字节为单位) - 结果
 - 所需的输出缓冲区大小(以字节为单位)
 - 异常
 -  
              
IllegalStateException- 如果此豁免机制处于错误状态(例如,尚未初始化) 
 
-  
init
public final void init(Key key) throws InvalidKeyException, ExemptionMechanismException
使用密钥初始化此豁免机制。如果此豁免机制需要任何无法从给定的
key派生的算法参数,则基础豁免机制实现应该自己生成所需的参数(使用特定于提供者的默认值); 如果必须由调用者指定算法参数,则引发InvalidKeyException。- 参数
 -  
              
key- 这种豁免机制的关键 - 异常
 -  
              
InvalidKeyException- 如果给定的密钥不适合此豁免机制。 -  
              
ExemptionMechanismException- 如果在初始化过程中遇到问题。 
 
-  
init
public final void init(Key key, AlgorithmParameterSpec params) throws InvalidKeyException, InvalidAlgorithmParameterException, ExemptionMechanismException
使用密钥和一组算法参数初始化此免除机制。如果此豁免机制需要任何算法参数且
params为空,则基础豁免机制实现应自行生成所需参数(使用特定于提供程序的默认值); 如果必须由调用者指定算法参数,则引发InvalidAlgorithmParameterException。- 参数
 -  
              
key- 此豁免机制的关键 -  
              
params- 算法参数 - 异常
 -  
              
InvalidKeyException- 如果给定密钥不适合此豁免机制。 -  
              
InvalidAlgorithmParameterException- 如果给定的算法参数不适合此豁免机制。 -  
              
ExemptionMechanismException- 如果在初始化过程中遇到问题。 
 
-  
init
public final void init(Key key, AlgorithmParameters params) throws InvalidKeyException, InvalidAlgorithmParameterException, ExemptionMechanismException
使用密钥和一组算法参数初始化此免除机制。如果此豁免机制需要任何算法参数且
params为空,则基础豁免机制实现应该自己生成所需的参数(使用特定于提供者的默认值); 如果必须由调用者指定算法参数,则引发InvalidAlgorithmParameterException。- 参数
 -  
              
key- 这种豁免机制的关键 -  
              
params- 算法参数 - 异常
 -  
              
InvalidKeyException- 如果给定密钥不适合此豁免机制。 -  
              
InvalidAlgorithmParameterException- 如果给定的算法参数不适合此豁免机制。 -  
              
ExemptionMechanismException- 如果在初始化过程中遇到问题。 
 
-  
genExemptionBlob
public final byte[] genExemptionBlob() throws IllegalStateException, ExemptionMechanismException生成豁免机制密钥blob。- 结果
 - 带有结果键blob的新缓冲区。
 - 异常
 -  
              
IllegalStateException- 如果此豁免机制处于错误状态(例如,尚未初始化)。 -  
              
ExemptionMechanismException- 如果在生成过程中遇到问题。 
 
-  
genExemptionBlob
public final int genExemptionBlob(byte[] output) throws IllegalStateException, ShortBufferException, ExemptionMechanismException生成豁免机制密钥blob,并将结果存储在output缓冲区中。如果
output缓冲区太小而无法保存结果,则抛出ShortBufferException。 在这种情况下,请使用更大的输出缓冲区重复此调用。 使用getOutputSize确定输出缓冲区应该有多大。- 参数
 -  
              
output- 结果的缓冲区 - 结果
 - 
               存储在 
              
output的字节数 - 异常
 -  
              
IllegalStateException- 如果此豁免机制处于错误状态(例如,尚未初始化)。 -  
              
ShortBufferException- 如果给定的输出缓冲区太小而无法保存结果。 -  
              
ExemptionMechanismException- 如果在生成过程中遇到问题。 
 
-  
genExemptionBlob
public final int genExemptionBlob(byte[] output, int outputOffset) throws IllegalStateException, ShortBufferException, ExemptionMechanismException生成豁免机制密钥blob,并将结果存储在output缓冲区中,从outputOffset开始。如果
output缓冲区太小而无法保存结果,则抛出ShortBufferException。 在这种情况下,请使用更大的输出缓冲区重复此调用。 使用getOutputSize确定输出缓冲区应该有多大。- 参数
 -  
              
output- 结果的缓冲区 -  
              
outputOffset- 存储结果的output中的偏移量 - 结果
 - 
               存储在 
              
output的字节数 - 异常
 -  
              
IllegalStateException- 如果此豁免机制处于错误状态(例如,尚未初始化)。 -  
              
ShortBufferException- 如果给定的输出缓冲区太小而无法保存结果。 -  
              
ExemptionMechanismException- 如果在生成过程中遇到问题。 
 
 -  
 
 -