java.lang.Object
javax.crypto.spec.PBEKeySpec
- 所有已实现的接口:
KeySpec
用户选择的密码,可用于基于密码的加密 (PBE).
密码可以被视为某种原始密钥材料,使用它的加密机制从中派生出加密密钥。
不同的 PBE 机制可能会消耗每个密码字符的不同位。例如, PKCS #5 中定义的 PBE 机制只查看每个字符的低 8 位,而 PKCS #12 查看每个字符的所有 16 位。
您可以通过创建适当的密钥工厂实例将密码字符转换为 PBE 密钥。例如,PKCS #5 的密钥工厂将仅从每个密码字符的低 8 位构建 PBE 密钥,而 PKCS #12 的密钥工厂将获取每个字符的所有 16 位。
另请注意,此类将密码存储为 char 数组而不是 String 对象(这看起来更合乎逻辑),因为 String 类是不可变的,并且当不再需要存储在其中的密码时无法覆盖其内部值。因此,此类将密码请求为 char 数组,以便在完成后可以将其覆盖。
- 自从:
- 1.4
- 参见:
-
构造方法总结
构造方法构造方法描述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 的构造方法。 -
方法总结
修饰符和类型方法描述final void清除密码的内部副本。final int如果未指定,则返回迭代计数或 0。final int返回要派生的密钥长度,如果未指定,则返回 0。final char[]返回密码的副本。final byte[]getSalt()如果未指定,则返回 salt 或 null 的副本。
-
构造方法详细信息
-
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[]。注意:
password和salt在存储到新的PBEKeySpec对象之前被克隆。- 参数:
password- 密码。salt- 盐。iterationCount- 迭代次数。keyLength- 要派生的密钥长度。- 抛出:
NullPointerException- 如果salt为空。IllegalArgumentException- 如果salt为空,即 0 长度,iterationCount或keyLength不是正数。
-
PBEKeySpec
public PBEKeySpec(char[] password, byte[] salt, int iterationCount) 采用密码、salt、迭代计数来生成固定密钥大小 PBE 密码的 PBEKey 的构造函数。如果为password指定了 null,则使用空 char[]。注意:
password和salt在存储到新的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 的副本。注意:此方法应返回盐的副本。调用者有责任在不再需要盐信息后将其清零。
- 返回:
- 盐。
-
getIterationCount
public final int getIterationCount()如果未指定,则返回迭代计数或 0。- 返回:
- 迭代次数。
-
getKeyLength
public final int getKeyLength()返回要派生的密钥长度,如果未指定,则返回 0。注意:这用于指示可变密钥大小密码的密钥长度首选项。实际密钥大小取决于每个提供程序的实现。
- 返回:
- 待派生的密钥长度。
-