Module java.base
Package java.security

Class AlgorithmParameters

java.lang.Object
java.security.AlgorithmParameters

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

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

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

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

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

  • AES
  • DESede
  • DiffieHellman
  • DSA
这些算法在Java安全标准算法名称规范的 AlgorithmParameters部分中有描述。请查阅您的实现的发布文档,以查看是否支持任何其他算法。
自版本:
1.2
参见:
  • Constructor Details

    • AlgorithmParameters

      protected AlgorithmParameters(AlgorithmParametersSpi paramSpi, Provider provider, String algorithm)
      创建一个AlgorithmParameters对象。
      参数:
      paramSpi - 代理
      provider - 提供程序
      algorithm - 算法
  • Method Details

    • getAlgorithm

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

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

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

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

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

      实现注意:
      JDK参考实现另外使用jdk.security.provider.preferred Security属性来确定指定算法的首选提供程序顺序。这可能与Security.getProviders()返回的提供程序顺序不同。
      参数:
      algorithm - 请求的算法名称。有关标准算法名称的信息,请参阅Java安全标准算法名称规范中的AlgorithmParameters部分。
      返回:
      新的参数对象
      抛出:
      NoSuchAlgorithmException - 如果没有Provider支持指定算法的AlgorithmParametersSpi实现
      NullPointerException - 如果algorithmnull
      参见:
    • getInstance

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

      返回一个新的AlgorithmParameters对象,封装了指定提供程序中的AlgorithmParametersSpi实现。指定的提供程序必须在安全提供程序列表中注册。

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

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

      参数:
      algorithm - 请求的算法名称。有关标准算法名称的信息,请参阅Java安全标准算法名称规范中的AlgorithmParameters部分。
      provider - 提供程序的名称。
      返回:
      新的参数对象
      抛出:
      IllegalArgumentException - 如果提供程序名称为null或为空
      NoSuchAlgorithmException - 如果指定提供程序中不可用指定算法的AlgorithmParametersSpi实现
      NoSuchProviderException - 如果指定提供程序未在安全提供程序列表中注册
      NullPointerException - 如果algorithmnull
      参见:
    • getInstance

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

      返回一个新的AlgorithmParameters对象,封装了指定提供程序中的AlgorithmParametersSpi实现。请注意,指定的提供程序不必在提供程序列表中注册。

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

      参数:
      algorithm - 请求的算法名称。有关标准算法名称的信息,请参阅Java安全标准算法名称规范中的AlgorithmParameters部分。
      provider - 提供程序的名称。
      返回:
      新的参数对象
      抛出:
      IllegalArgumentException - 如果提供程序为null
      NoSuchAlgorithmException - 如果指定Provider对象中不可用指定算法的AlgorithmParameterGeneratorSpi实现
      NullPointerException - 如果algorithmnull
      自版本:
      1.4
      参见:
    • getProvider

      public final Provider getProvider()
      返回此参数对象的提供程序。
      返回:
      此参数对象的提供程序
    • init

      public final void init(AlgorithmParameterSpec paramSpec) throws InvalidParameterSpecException
      使用paramSpec中指定的参数初始化此参数对象。
      参数:
      paramSpec - 参数规范。
      抛出:
      InvalidParameterSpecException - 如果给定的参数规范不适合初始化此参数对象,或者如果此参数对象已经被初始化。
    • 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导入参数并根据指定的解码方案对其进行解码。如果formatnull,则使用参数的主要解码格式。如果存在这些参数的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
      返回以指定方案编码的参数。 如果 formatnull,则使用参数的主要编码格式。 如果存在此类型参数的 ASN.1 规范,则主要编码格式为 ASN.1。
      参数:
      format - 编码格式的名称。
      返回:
      使用指定编码方案编码的参数。
      抛出:
      IOException - 在编码错误时,或者如果此参数对象尚未初始化。
    • toString

      public final String toString()
      返回描述参数的格式化字符串。
      覆盖:
      toString 在类 Object
      返回:
      描述参数的格式化字符串,如果此参数对象尚未初始化,则返回 null