Module java.base

Class PBEKeySpec

java.lang.Object
javax.crypto.spec.PBEKeySpec
所有已实现的接口:
KeySpec

public class PBEKeySpec extends Object implements KeySpec
用户选择的可用于基于密码的加密(PBE)的密码。

密码可以被视为某种原始密钥材料,加密机制从中派生出一个密码密钥。

不同的PBE机制可能会消耗每个密码字符的不同位。例如,在PKCS#5中定义的PBE机制仅查看每个字符的低8位,而PKCS#12查看每个字符的所有16位。

通过创建适当的秘密密钥工厂实例,您可以将密码字符转换为PBE密钥。例如,PKCS#5的秘密密钥工厂将从每个密码字符的低8位构造PBE密钥,而PKCS#12的秘密密钥工厂将获取每个字符的所有16位。

还请注意,该类将密码存储为char数组而不是String对象(后者似乎更合乎逻辑),因为String类是不可变的,当不再需要其中存储的密码时,无法覆盖其内部值。因此,该类请求将密码作为char数组,以便在完成后可以覆盖它。

自JDK版本:
1.4
参见:
  • Constructor Summary

    Constructors
    Constructor
    Description
    PBEKeySpec(char[] password)
    接受密码的构造函数。
    PBEKeySpec(char[] password, byte[] salt, int iterationCount)
    接受密码、盐、生成固定密钥大小PBE密码的迭代次数的构造函数。
    PBEKeySpec(char[] password, byte[] salt, int iterationCount, int keyLength)
    接受密码、盐、迭代次数和生成可变密钥大小PBE密码的密钥长度的构造函数。
  • Method Summary

    Modifier and Type
    Method
    Description
    final void
    清除密码的内部副本。
    final int
    返回迭代次数,如果未指定则返回0。
    final int
    返回将要派生的密钥长度,如果未指定则返回0。
    final char[]
    返回密码的副本。
    final byte[]
    返回盐的副本,如果未指定则返回null。

    Methods declared in class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • PBEKeySpec

      public PBEKeySpec(char[] password)
      接受密码的构造函数。如果指定为null,则使用空char[]。

      注意:password在存储在新的PBEKeySpec对象之前会被克隆。

      参数:
      password - 密码。
    • PBEKeySpec

      public PBEKeySpec(char[] password, byte[] salt, int iterationCount, int keyLength)
      接受密码、盐、迭代次数和生成可变密钥大小PBE密码的密钥长度的构造函数。如果指定为null,则使用空char[]。

      注意:passwordsalt在存储在新的PBEKeySpec对象之前会被克隆。

      参数:
      password - 密码。
      salt - 盐。
      iterationCount - 迭代次数。
      keyLength - 将要派生的密钥长度。
      抛出:
      NullPointerException - 如果salt为null。
      IllegalArgumentException - 如果salt为空,即长度为0,iterationCountkeyLength不为正数。
    • PBEKeySpec

      public PBEKeySpec(char[] password, byte[] salt, int iterationCount)
      接受密码、盐、生成固定密钥大小PBE密码的迭代次数的构造函数。如果指定为null,则使用空char[]。

      注意:passwordsalt在存储在新的PBEKeySpec对象之前会被克隆。

      参数:
      password - 密码。
      salt - 盐。
      iterationCount - 迭代次数。
      抛出:
      NullPointerException - 如果salt为null。
      IllegalArgumentException - 如果salt为空,即长度为0,或iterationCount不为正数。
  • Method Details

    • clearPassword

      public final void clearPassword()
      清除密码的内部副本。
    • getPassword

      public final char[] getPassword()
      返回密码的副本。

      注意:此方法返回密码的副本。调用者有责任在不再需要密码信息时将其清零。

      返回:
      密码。
      抛出:
      IllegalStateException - 如果通过调用clearPassword方法清除了密码。
    • getSalt

      public final byte[] getSalt()
      返回盐的副本,如果未指定则返回null。

      注意:此方法应返回盐的副本。调用者有责任在不再需要盐信息时将其清零。

      返回:
      盐。
    • getIterationCount

      public final int getIterationCount()
      返回迭代次数,如果未指定则返回0。
      返回:
      迭代次数。
    • getKeyLength

      public final int getKeyLength()
      返回将要派生的密钥长度,如果未指定则返回0。

      注意:这用于指示可变密钥大小密码的密钥长度偏好。实际密钥大小取决于每个提供程序的实现。

      返回:
      将要派生的密钥长度。