public class PBEKeySpec
extends Object
implements KeySpec
java.lang.Object | |
↳ | javax.crypto.spec.PBEKeySpec |
用户选择的密码,可用于基于密码的加密( PBE )。
密码可以被视为某种原始密钥材料,使用它的加密机制会从中导出加密密钥。
不同的PBE机制可能消耗每个密码字符的不同位。 例如, PKCS #5中定义的PBE机制仅查看每个字符的低8位,而PKCS#12查看每个字符的全部16位。
通过创建适当的密钥工厂实例,将密码字符转换为PBE密钥。 例如,PKCS#5的密钥工厂将仅从每个密码字符的低位8位构造PBE密钥,而PKCS#12的密钥工厂将占用每个字符的全部16位。
还要注意,这个类将密码存储为char数组而不是String
对象(这看起来更合理),因为String类是不可变的,并且当不再需要存储在其中的密码时,无法覆盖其内部值。 因此,这个类将密码作为char数组请求,所以它可以在完成时被覆盖。
也可以看看:
Public constructors |
|
---|---|
PBEKeySpec(char[] password) 需要密码的构造函数。 |
|
PBEKeySpec(char[] password, byte[] salt, int iterationCount, int keyLength) 构造函数接受密码,salt,迭代次数和待导出的密钥长度,以生成可变密钥大小的PBE密码的PBEKey。 |
|
PBEKeySpec(char[] password, byte[] salt, int iterationCount) 构造函数需要密码,salt和迭代计数来生成固定密钥大小的PBE密码的PBEKey。 |
Public methods |
|
---|---|
final void |
clearPassword() 清除密码的内部副本。 |
final int |
getIterationCount() 如果未指定,则返回迭代计数或0。 |
final int |
getKeyLength() 返回要导出的密钥长度,如果未指定,则返回0。 |
final char[] |
getPassword() 返回密码的副本。 |
final byte[] |
getSalt() 返回salt的副本,如果未指定,则返回null。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
PBEKeySpec (char[] password)
需要密码的构造函数。 如果指定了null,则使用空字符[]。
注意: password
在被存储在新的 PBEKeySpec
对象中之前被克隆。
Parameters | |
---|---|
password |
char : the password. |
PBEKeySpec (char[] password, byte[] salt, int iterationCount, int keyLength)
构造函数接受密码,salt,迭代次数和待导出的密钥长度,以生成可变密钥大小的PBE密码的PBEKey。 如果为password
指定了null,则使用空char []。
注意: password
和 salt
在存储到新的 PBEKeySpec
对象之前被克隆。
Parameters | |
---|---|
password |
char : the password. |
salt |
byte : the salt. |
iterationCount |
int : the iteration count. |
keyLength |
int : the to-be-derived key length. |
Throws | |
---|---|
NullPointerException |
if salt is null. |
IllegalArgumentException |
if salt is empty, i.e. 0-length, iterationCount or keyLength is not positive. |
PBEKeySpec (char[] password, byte[] salt, int iterationCount)
构造函数需要密码,salt和迭代计数来生成固定密钥大小的PBE密码的PBEKey。 如果为password
指定了null,则使用空字符[]。
注意: password
和 salt
在被存储在新的 PBEKeySpec
对象中之前被克隆。
Parameters | |
---|---|
password |
char : the password. |
salt |
byte : the salt. |
iterationCount |
int : the iteration count. |
Throws | |
---|---|
NullPointerException |
if salt is null. |
IllegalArgumentException |
if salt is empty, i.e. 0-length, or iterationCount is not positive. |
int getIterationCount ()
如果未指定,则返回迭代计数或0。
Returns | |
---|---|
int |
the iteration count. |
int getKeyLength ()
返回要导出的密钥长度,如果未指定,则返回0。
注意:这用于指示可变密钥大小密码的密钥长度偏好。 实际的密钥大小取决于每个提供者的实现。
Returns | |
---|---|
int |
the to-be-derived key length. |
char[] getPassword ()
返回密码的副本。
注意:此方法返回密码的副本。 在不再需要密码信息后,调用者有责任清除密码信息。
Returns | |
---|---|
char[] |
the password. |
Throws | |
---|---|
IllegalStateException |
if password has been cleared by calling clearPassword method. |
byte[] getSalt ()
返回salt的副本,如果未指定,则返回null。
注意:这个方法应该返回salt的一个副本。 调用者有责任在盐信息不再需要后将其归零。
Returns | |
---|---|
byte[] |
the salt. |