Module java.base
Package javax.crypto

Class SecretKeyFactory

java.lang.Object
javax.crypto.SecretKeyFactory

public class SecretKeyFactory extends Object
这个类表示一个密钥工厂。

密钥工厂用于将密钥(类型为Key的不透明加密密钥)转换为密钥规范(底层密钥材料的透明表示),反之亦然。秘密密钥工厂仅操作秘密(对称)密钥。

密钥工厂是双向的,即它们允许从给定的密钥规范(密钥材料)构建不透明密钥对象,或以适当格式检索密钥对象的底层密钥材料。

应用程序开发人员应参考其提供程序的文档,以了解generateSecretgetKeySpec方法支持哪些密钥规范。例如,由"SunJCE"提供程序提供的DESede(Triple DES)秘密密钥工厂支持DESedeKeySpec作为Triple DES密钥的透明表示。

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

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

    • SecretKeyFactory

      protected SecretKeyFactory(SecretKeyFactorySpi keyFacSpi, Provider provider, String algorithm)
      创建一个SecretKeyFactory对象。
      参数:
      keyFacSpi - 代理
      provider - 提供程序
      algorithm - 秘密密钥算法
  • Method Details

    • getInstance

      public static final SecretKeyFactory getInstance(String algorithm) throws NoSuchAlgorithmException
      返回一个SecretKeyFactory对象,用于转换指定算法的秘密密钥。

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

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

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

      public static final SecretKeyFactory getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
      返回一个SecretKeyFactory对象,用于转换指定算法的秘密密钥。

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

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

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

      public static final SecretKeyFactory getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
      返回一个SecretKeyFactory对象,用于转换指定算法的秘密密钥。

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

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

      public final Provider getProvider()
      返回此SecretKeyFactory对象的提供程序。
      返回:
      SecretKeyFactory对象的提供程序
    • getAlgorithm

      public final String getAlgorithm()
      返回此SecretKeyFactory对象的算法名称。

      这是在创建此SecretKeyFactory对象的getInstance调用中指定的相同名称。

      返回:
      SecretKeyFactory对象的算法名称。
    • generateSecret

      public final SecretKey generateSecret(KeySpec keySpec) throws InvalidKeySpecException
      从提供的密钥规范(密钥材料)生成一个SecretKey对象。
      参数:
      keySpec - 密钥的规范(密钥材料)
      返回:
      密钥
      抛出:
      InvalidKeySpecException - 如果给定的密钥规范不适合此秘密密钥工厂生成一个密钥。
    • getKeySpec

      public final KeySpec getKeySpec(SecretKey key, Class<?> keySpec) throws InvalidKeySpecException
      返回所请求格式中给定密钥对象的规范(密钥材料)。
      参数:
      key - 密钥
      keySpec - 应返回密钥材料的请求格式
      返回:
      所请求格式中的底层密钥规范(密钥材料)
      抛出:
      InvalidKeySpecException - 如果请求的密钥规范不适合给定的密钥(例如,与keykeySpec关联的算法不匹配,或key引用加密硬件设备上的密钥,而keySpec是软件密钥的规范,或给定的密钥无法处理(例如,给定的密钥具有此秘密密钥工厂不支持的算法或格式)。
    • translateKey

      public final SecretKey translateKey(SecretKey key) throws InvalidKeyException
      将一个密钥对象(其提供者可能未知或潜在不受信任)转换为此秘密密钥工厂的相应密钥对象。
      参数:
      key - 提供者未知或不受信任的密钥
      返回:
      转换后的密钥
      抛出:
      InvalidKeyException - 如果给定的密钥无法被此秘密密钥工厂处理。