Module  java.base
软件包  javax.crypto.spec

Class PBEKeySpec

  • All Implemented Interfaces:
    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数组,因此完成后可以覆盖该字符串。

    从以下版本开始:
    1.4
    另请参见:
    SecretKeyFactoryPBEParameterSpec
    • 构造方法摘要

      构造方法  
      Constructor 描述
      PBEKeySpec​(char[] password)
      使用密码的构造方法。
      PBEKeySpec​(char[] password, byte[] salt, int iterationCount)
      构造函数采用密码,盐,迭代计数,生成固定密钥大小的PBE密码的PBEKey。
      PBEKeySpec​(char[] password, byte[] salt, int iterationCount, int keyLength)
      构造函数,它使用密码,盐,迭代计数和待导出的密钥长度来生成可变密钥大小的PBE密码的PBEKey。
    • 构造方法详细信息

      • PBEKeySpec

        public PBEKeySpec​(char[] password)
        使用密码的构造方法。 如果指定了null,则使用空的char []。

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

        参数
        password - 密码。
      • PBEKeySpec

        public PBEKeySpec​(char[] password,
                          byte[] salt,
                          int iterationCount,
                          int keyLength)
        构造函数,它使用密码,盐,迭代计数和待导出的密钥长度来生成可变密钥大小的PBE密码的PBEKey。 如果为password指定了null,则使用空字符[]。

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

        参数
        password - 密码。
        salt - 盐。
        iterationCount - 迭代计数。
        keyLength - 要导出的密钥长度。
        异常
        NullPointerException - 如果 salt为空。
        IllegalArgumentException - 如果 salt为空,即0长度, iterationCountkeyLength不为正。
      • PBEKeySpec

        public PBEKeySpec​(char[] password,
                          byte[] salt,
                          int iterationCount)
        构造函数采用密码,盐,迭代计数,生成固定密钥大小的PBE密码的PBEKey。 如果为password指定了null,则使用空字符[]。

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

        参数
        password - 密码。
        salt - 盐。
        iterationCount - 迭代计数。
        异常
        NullPointerException - 如果 salt为空。
        IllegalArgumentException - 如果 salt为空,即0长度,或 iterationCount不为正。
    • 方法详细信息

      • clearPassword

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

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

        注意:此方法返回密码的副本。 呼叫者有责任在不再需要密码信息后将其清除。

        结果
        密码。
        异常
        IllegalStateException - 如果通过调用 clearPassword方法清除了密码。
      • getSalt

        public final byte[] getSalt​()
        如果没有指定,则返回salt的副本。

        注意:此方法应返回盐的副本。 呼叫者有责任在不再需要盐信息后将其清除掉。

        结果
        盐。
      • getIterationCount

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

        public final int getKeyLength​()
        返回要导出的密钥长度,如果未指定则返回0。

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

        结果
        the to-be-derived key length.