Module  java.base
软件包  java.security

Class AlgorithmParameters



  • public class AlgorithmParameters
    extends Object
    此类用作加密参数的不透明表示。

    可以通过调用getInstance工厂方法(返回给定类的实例的静态方法)来获得用于管理特定算法的参数的AlgorithmParameters对象。

    一旦获得了一个AlgorithmParameters对象,它必须通过使用适当的参数规范或参数编码通过调用init进行初始化。

    通过调用getParameterSpecAlgorithmParameters对象获得透明参数规范,并通过调用getEncoded获取参数的字节编码。

    Java平台的每个实现都需要支持以下标准的AlgorithmParameters算法:

    • AES
    • DES
    • DESede
    • DiffieHellman
    • DSA
    这些算法在Java安全标准算法名称规范的AlgorithmParameters section中进行了描述。 请参阅发行说明文件以了解是否支持其他算法。
    从以下版本开始:
    1.2
    另请参见:
    AlgorithmParameterSpecDSAParameterSpecKeyPairGenerator
    • 构造方法详细信息

      • AlgorithmParameters

        protected AlgorithmParameters​(AlgorithmParametersSpi paramSpi,
                                      Provider provider,
                                      String algorithm)
        创建一个AlgorithmParameters对象。
        参数
        paramSpi - 代表
        provider - 提供商
        algorithm - 算法
    • 方法详细信息

      • getAlgorithm

        public final String getAlgorithm​()
        返回与此参数对象关联的算法的名称。
        结果
        算法名称。
      • getInstance

        public static AlgorithmParameters getInstance​(String algorithm)
                                               throws NoSuchAlgorithmException
        返回指定算法的参数对象。

        此方法遍历已注册的安全提供程序列表,从最优选的提供程序开始。 返回从支持指定算法的第一个Provider中封装AlgorithmParametersSpi实现的新AlgorithmParameters对象。

        请注意,可以通过Security.getProviders()方法检索已注册提供商的列表。

        返回的参数对象必须通过调用init进行初始化,使用适当的参数规范或参数编码。

        Implementation Note:
        JDK参考实现另外使用jdk.security.provider.preferred Security属性来确定指定算法的首选提供者顺序。 这可能与Security.getProviders()返回的提供商的顺序不同。
        参数
        algorithm - 请求的算法的名称。 有关标准算法名称的信息,请参阅Java Security Standard Algorithm Names Specification中的AlgorithmParameters部分。
        结果
        新的参数对象
        异常
        NoSuchAlgorithmException - 如果没有 Provider支持指定算法的 AlgorithmParametersSpi实现
        NullPointerException - 如果 algorithmnull
        另请参见:
        Provider
      • getInstance

        public static AlgorithmParameters getInstance​(String algorithm,
                                                      Provider provider)
                                               throws NoSuchAlgorithmException
        返回指定算法的参数对象。

        返回从指定的Provider对象封装AlgorithmParametersSpi实现的新AlgorithmParameters对象。 请注意,指定的Provider对象不必在提供者列表中注册。

        返回的参数对象必须通过调用init进行初始化,使用适当的参数规范或参数编码。

        参数
        algorithm - 请求的算法的名称。 有关标准算法名称的信息,请参阅Java Security Standard Algorithm Names Specification中的AlgorithmParameters部分。
        provider - 提供商的名称。
        结果
        新的参数对象
        异常
        IllegalArgumentException - 如果提供者是 null
        NoSuchAlgorithmException - 如果指定的算法的 AlgorithmParameterGeneratorSpi实现不能从指定的 Provider对象获得
        NullPointerException - 如果 algorithmnull
        从以下版本开始:
        1.4
        另请参见:
        Provider
      • getProvider

        public final Provider getProvider​()
        返回此参数对象的提供者。
        结果
        该参数对象的提供者
      • init

        public final void init​(byte[] params)
                        throws IOException
        导入指定的参数,并根据参数的主要解码格式进行解码。 参数的主要解码格式是ASN.1,如果存在此类参数的ASN.1规范。
        参数
        params - 编码参数。
        异常
        IOException - 解码错误,或者该参数对象是否已被初始化。
      • init

        public final void init​(byte[] params,
                               String format)
                        throws IOException
        params导入参数,并根据指定的解码方案进行解码。 如果format为null,则使用参数的主要解码格式。 主要解码格式为ASN.1,如果存在这些参数的ASN.1规范。
        参数
        params - 编码参数。
        format - 解码方案的名称。
        异常
        IOException - 解码错误,或者该参数对象是否已被初始化。
      • getParameterSpec

        public final <T extends AlgorithmParameterSpec> T getParameterSpec​(Class<T> paramSpec)
                                                                    throws InvalidParameterSpecException
        返回此参数对象的(透明)规范。 paramSpec标识应该返回参数的规范类。 例如,它可以是DSAParameterSpec.class ,以表明在DSAParameterSpec类的实例中应该返回参数。
        参数类型
        T - 要重新执行的参数规范的类型
        参数
        paramSpec - 应该返回参数的规范类。
        结果
        参数规格。
        异常
        InvalidParameterSpecException - 如果请求的参数规范不适合此参数对象,或者该参数对象尚未初始化。
      • getEncoded

        public final byte[] getEncoded​()
                                throws IOException
        返回其主要编码格式的参数。 参数的主要编码格式是ASN.1,如果存在此类参数的ASN.1规范。
        结果
        使用其主编码格式编码的参数。
        异常
        IOException - 对编码错误,或者该参数对象尚未初始化。
      • getEncoded

        public final byte[] getEncoded​(String format)
                                throws IOException
        返回在指定方案中编码的参数。 如果format为null,则使用参数的主编码格式。 如果存在这些参数的ASN.1规范,则主编码格式为ASN.1。
        参数
        format - 编码格式的名称。
        结果
        使用指定编码方案编码的参数。
        异常
        IOException - 关于编码错误,或者该参数对象尚未初始化。
      • toString

        public final String toString​()
        返回描述参数的格式化字符串。
        重写:
        toStringObject
        结果
        描述参数的格式化字符串,如果此参数对象尚未初始化,则为null。