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数组,以便在完成后可以覆盖它。
- 自JDK版本:
- 1.4
- 参见:
-
Constructor Summary
ConstructorDescriptionPBEKeySpec
(char[] password) 接受密码的构造函数。PBEKeySpec
(char[] password, byte[] salt, int iterationCount) 接受密码、盐、生成固定密钥大小PBE密码的迭代次数的构造函数。PBEKeySpec
(char[] password, byte[] salt, int iterationCount, int keyLength) 接受密码、盐、迭代次数和生成可变密钥大小PBE密码的密钥长度的构造函数。 -
Method Summary
Modifier and TypeMethodDescriptionfinal void
清除密码的内部副本。final int
返回迭代次数,如果未指定则返回0。final int
返回将要派生的密钥长度,如果未指定则返回0。final char[]
返回密码的副本。final byte[]
getSalt()
返回盐的副本,如果未指定则返回null。
-
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[]。注意:
password
和salt
在存储在新的PBEKeySpec
对象之前会被克隆。- 参数:
-
password
- 密码。 -
salt
- 盐。 -
iterationCount
- 迭代次数。 -
keyLength
- 将要派生的密钥长度。 - 抛出:
-
NullPointerException
- 如果salt
为null。 -
IllegalArgumentException
- 如果salt
为空,即长度为0,iterationCount
或keyLength
不为正数。
-
PBEKeySpec
public PBEKeySpec(char[] password, byte[] salt, int iterationCount) 接受密码、盐、生成固定密钥大小PBE密码的迭代次数的构造函数。如果指定为null,则使用空char[]。注意:
password
和salt
在存储在新的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。注意:这用于指示可变密钥大小密码的密钥长度偏好。实际密钥大小取决于每个提供程序的实现。
- 返回:
- 将要派生的密钥长度。
-