模块  java.base
软件包  javax.crypto.spec

Class 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数组,因此可以在完成时覆盖它。

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

      构造方法  
      构造器 描述
      PBEKeySpec​(char[] password)
      获取密码的构造函数。
      PBEKeySpec​(char[] password, byte[] salt, int iterationCount)
      构造函数,它使用密码,salt,迭代计数来生成固定密钥大小的PBE密码的PBEKey。
      PBEKeySpec​(char[] password, byte[] salt, int iterationCount, int keyLength)
      构造函数,用于获取密码,salt,迭代计数和将要派生的密钥长度,以生成可变密钥大小的PBE密码的PBEKey。
    • 构造方法详细信息

      • PBEKeySpec

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

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

        参数
        password - 密码。
      • PBEKeySpec

        public PBEKeySpec​(char[] password,
                          byte[] salt,
                          int iterationCount,
                          int keyLength)
        构造函数,用于获取密码,salt,迭代计数和将要派生的密钥长度,以生成可变密钥大小的PBE密码的PBEKey。 如果为password指定了null,则使用空char []。

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

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

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

        注意: 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的副本,如果未指定,则返回null。

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

        结果
        盐。
      • getIterationCount

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

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

        注意:这用于指示可变密钥大小密码的密钥长度的首选项。 实际密钥大小取决于每个提供商的实现。

        结果
        the to-be-derived key length.