public class ExemptionMechanism extends Object
使用豁免机制的应用程序或小程序可能被授予比没有加密功能的更强的加密能力。
| Modifier | Constructor and Description | 
|---|---|
| protected  | ExemptionMechanism(ExemptionMechanismSpi exmechSpi, Provider provider, String mechanism)
              创建一个ExemptionMechanism对象。 
             | 
| Modifier and Type | Method and Description | 
|---|---|
| protected void | finalize()
              确保当这个ExemptionMechanism对象存储的密钥在没有更多的引用时被清除。 
             | 
| byte[] | genExemptionBlob()
              生成豁免机制密钥blob。 
             | 
| int | genExemptionBlob(byte[] output)
              生成豁免机制密钥blob,并将结果存储在 
              output缓冲区中。 | 
| int | genExemptionBlob(byte[] output, int outputOffset)
              生成豁免机制密钥blob,并将结果存储在 
              output缓冲区中,从outputOffset开始。 | 
| static ExemptionMechanism | getInstance(String algorithm)
              返回实现指定的 
              ExemptionMechanism对象。 | 
| static ExemptionMechanism | getInstance(String algorithm, Provider provider)
              返回一个 
              ExemptionMechanism指定的豁免机制算法的ExemptionMechanism对象。 | 
| static ExemptionMechanism | getInstance(String algorithm, String provider)
              返回实现指定的 
              ExemptionMechanism对象。 | 
| String | getName()
              返回此 
              ExemptionMechanism对象的豁免机制名称。 | 
| int | getOutputSize(int inputLen)
              给定输入长度 
              inputLen(以字节为单位),返回输出缓冲区需要保留下一个genExemptionBlob操作结果的字节长度。 | 
| Provider | getProvider()
              返回此 
              ExemptionMechanism对象的提供者。 | 
| void | init(Key key)
              使用密钥初始化此豁免机制。 
             | 
| void | init(Key key, AlgorithmParameters params)
              使用密钥和一组算法参数初始化此豁免机制。 
             | 
| void | init(Key key, AlgorithmParameterSpec params)
              使用密钥和一组算法参数初始化此豁免机制。 
             | 
| boolean | isCryptoAllowed(Key key)
              返回此豁免机制是否已成功生成结果blob。 
             | 
protected ExemptionMechanism(ExemptionMechanismSpi exmechSpi, Provider provider, String mechanism)
exmechSpi - 代表 
           provider - 提供商 
           mechanism - 豁免机制 
           public final String getName()
ExemptionMechanism对象的豁免机制名称。 
            这是在创建此ExemptionMechanism对象的getInstance调用之一中指定的getInstance 。 
ExemptionMechanism对象的豁免机制名称。 
           public static final ExemptionMechanism getInstance(String algorithm) throws NoSuchAlgorithmException
ExemptionMechanism对象。 
           此方法遍历已注册的安全提供程序列表,从最优选的提供程序开始。 返回从支持指定算法的第一个Provider中封装ExemptionMechanismSpi实现的新的ExemptionMechanism对象。
 请注意,注册提供商的列表可以通过Security.getProviders()方法检索 。 
algorithm - 请求的豁免机制的标准名称。 
            有关标准豁免机制名称的信息,请参阅Java Cryptography Architecture Standard Algorithm Name Documentation中的豁免机制部分。 
           ExemptionMechanism对象。 
           NullPointerException - 如果 
            algorithm为空。 
           NoSuchAlgorithmException - 如果没有提供者支持指定算法的ExemptionMechanismSpi实现。 
           Provider 
           public static final ExemptionMechanism getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
ExemptionMechanism指定的免除机制算法的ExemptionMechanism对象。 
           返回从指定的提供程序封装ExemptionMechanismSpi实现的新的ExemptionMechanism对象。 指定的提供者必须在安全提供程序列表中注册。
 请注意,注册提供商的列表可以通过Security.getProviders()方法检索 。 
algorithm - 请求豁免机制的标准名称。 
            有关标准豁免机制名称的信息,请参阅Java Cryptography Architecture Standard Algorithm Name Documentation中的豁免机制部分。 
           provider - 提供者的名称。 
           ExemptionMechanism对象。 
           NullPointerException - 如果 
            algorithm为空。 
           NoSuchAlgorithmException - 如果指定的算法的ExemptionMechanismSpi实现从指定的提供程序中不可用。 
           NoSuchProviderException - 如果指定的提供程序未在安全提供程序列表中注册。 
           IllegalArgumentException - 如果 
            provider为空或为空。 
           Provider 
           public static final ExemptionMechanism getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
ExemptionMechanism对象。 
           返回从指定的Provider对象封装ExemptionMechanismSpi实现的新的ExemptionMechanism对象。 请注意,指定的Provider对象不必在提供者列表中注册。
algorithm - 请求的豁免机制的标准名称。 
            有关标准豁免机制名称的信息,请参阅Java Cryptography Architecture Standard Algorithm Name Documentation中的“ 豁免机制”部分。 
           provider - 提供商。 
           ExemptionMechanism对象。 
           NullPointerException - 如果 
            algorithm为空。 
           NoSuchAlgorithmException - 如果指定的算法的ExemptionMechanismSpi实现从指定的Provider对象不可用。 
           IllegalArgumentException - 如果 
            provider为空。 
           Provider 
           public final Provider getProvider()
ExemptionMechanism对象的提供者。 
          ExemptionMechanism对象的提供者。 
           public final boolean isCryptoAllowed(Key key) throws ExemptionMechanismException
该方法还确保传入的密钥与初始化和生成阶段中使用的豁免机制相同。
key - 密码将要使用的密钥。 
           key为空,则为false。 
           ExemptionMechanismException - 如果在确定结果blob是否已被此豁免机制对象成功生成时遇到问题。 
           public final int getOutputSize(int inputLen)
                        throws IllegalStateException 
          inputLen (以字节为单位),返回输出缓冲区需要保存下一个genExemptionBlob操作结果的字节长度。 
            下一个genExemptionBlob调用的实际输出长度可能小于此方法返回的长度。 
inputLen - 输入长度(以字节为单位) 
           IllegalStateException - 如果此豁免机制处于错误状态(例如尚未初始化) 
           public final void init(Key key) throws InvalidKeyException, ExemptionMechanismException
 如果此豁免机制需要不能从给定的key派生的任何key ,则基础豁免机制实现应该自身生成所需参数(使用提供者特定的默认值); 在的情况下算法参数必须由呼叫者指定,一个InvalidKeyException上升。 
key - 这个豁免机制的关键 
           InvalidKeyException - 如果给定的密钥不适用于此豁免机制。 
           ExemptionMechanismException - 如果在初始化过程中遇到问题。 
           public final void init(Key key, AlgorithmParameterSpec params) throws InvalidKeyException, InvalidAlgorithmParameterException, ExemptionMechanismException
 如果此豁免机制需要任何算法参数,并且params为空,则基础豁免机制实现应该自身生成所需参数(使用提供者特定的默认值); 在的情况下算法参数必须由呼叫者指定,一个InvalidAlgorithmParameterException上升。 
key - 这个豁免机制的关键 
           params - 算法参数 
           InvalidKeyException - 如果给定的密钥不适用于此豁免机制。 
           InvalidAlgorithmParameterException - 如果给定的算法参数不适用于此豁免机制。 
           ExemptionMechanismException - 如果在初始化过程中遇到问题。 
           public final void init(Key key, AlgorithmParameters params) throws InvalidKeyException, InvalidAlgorithmParameterException, ExemptionMechanismException
 如果此豁免机制需要任何算法参数,并且params为null,则基础豁免机制实现应该自身生成所需参数(使用提供者特定的默认值); 在的情况下算法参数必须由呼叫者指定,一个InvalidAlgorithmParameterException上升。 
key - 这个豁免机制的关键 
           params - 算法参数 
           InvalidKeyException - 如果给定的密钥不适用于此豁免机制。 
           InvalidAlgorithmParameterException - 如果给定的算法参数不适用于此豁免机制。 
           ExemptionMechanismException - 如果在初始化过程中遇到问题。 
           public final byte[] genExemptionBlob()
                              throws IllegalStateException,
                                     ExemptionMechanismException 
          IllegalStateException - 如果此豁免机制处于错误状态(例如,尚未初始化)。 
           ExemptionMechanismException - 如果在生成过程中遇到问题。 
           public final int genExemptionBlob(byte[] output)
                           throws IllegalStateException,
                                  ShortBufferException,
                                  ExemptionMechanismException 
          output缓冲区中。 
            如果output缓冲区太小而不能保存结果,则抛出ShortBufferException 。 在这种情况下,使用较大的输出缓冲区重复此呼叫。 使用getOutputSize来确定输出缓冲区应该有多大。 
output - 结果的缓冲区 
           output中的字节数 
           IllegalStateException - 如果此豁免机制处于错误状态(例如,尚未初始化)。 
           ShortBufferException - 如果给定的输出缓冲区太小,不能保存结果。 
           ExemptionMechanismException - 如果在生成过程中遇到问题。 
           public final int genExemptionBlob(byte[] output,
                                  int outputOffset)
                           throws IllegalStateException,
                                  ShortBufferException,
                                  ExemptionMechanismException 
          output缓冲区中,从outputOffset开始。 
            如果output缓冲区太小,无法保存结果,则会抛出一个ShortBufferException 。 在这种情况下,使用较大的输出缓冲区重复此呼叫。 使用getOutputSize确定输出缓冲区应该有多大。 
output - 结果的缓冲区 
           outputOffset - 
            output中存储结果的偏移量 
           output中的字节数 
           IllegalStateException - 如果此豁免机制处于错误状态(例如,尚未初始化)。 
           ShortBufferException - 如果给定的输出缓冲区太小,不能保存结果。 
           ExemptionMechanismException - 如果在生成过程中遇到问题。 
           protected void finalize()
finalize在类别 
            Object 
           WeakReference , PhantomReference 
            Submit a bug or feature 
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
 Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.