java.lang.Object javax.crypto.spec.PBEKeySpec
可随同基于密码的加密法 (PBE) 使用的供用户选择的密码。
可以将密码视为某种原始密钥内容,由此加密机制使用其导出一个密钥。
不同的 PBE 机制可能对每一个密码字符使用不同的位数。例如,在 PKCS #5 中定义的 PEB 机制仅仅关注每一个字符的低 8 位,而 PKCS #12 关注每一个字符的全 16 位。
通过创建一个合适的密钥工厂实例来将密码转换成为一个 PBE 密钥。例如,PKCS #5 的密钥工厂仅根据每个密码字符的低 8 位来构造 PBE 密钥,而 PKCS #12 的密钥工厂将使用每个字符的全 16 位。
还要注意,此类以 char 数组而不是 String
对象的形式存储密码(这可能更具逻辑性),因为 String 类是不可变的,当不再需要存储在其中的密码时没有任何途径来重写其内部值。因此,此类需要以 char 数组作密码,以便在完成后进行重写。
SecretKeyFactory
,
PBEParameterSpec
构造方法摘要 | |
---|---|
PBEKeySpec(char[] password) 带有一个密码的构造方法。 |
|
PBEKeySpec(char[] password, byte[] salt, int iterationCount) 带有生成固定密钥大小的 PBE 密码的 PBEKey 时使用的一个密码、salt、迭代数的构造方法。 |
|
PBEKeySpec(char[] password, byte[] salt, int iterationCount, int keyLength) 带有生成可变密钥大小的 PBE 密码的 PBEKey 时使用的一个密码、salt、迭代计数以及导出密钥长度的构造方法。 |
方法摘要 | |
---|---|
void |
clearPassword() 清空密码的内部副本。 |
int |
getIterationCount() 返回迭代计数,如果未指定则返回 0。 |
int |
getKeyLength() 返回要导出的密钥长度,如果未指定则返回 0。 |
char[] |
getPassword() 返回密码的一份副本。 |
byte[] |
getSalt() 返回 salt 的一份副本,如果未指定则返回 null。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
public PBEKeySpec(char[] password)
注:在将 password
存储进新的 PBEKeySpec
对象前将其复制。
password
- 密码。
public PBEKeySpec(char[] password, byte[] salt, int iterationCount, int keyLength)
password
为 null,则使用一个空 char[]。
注:在将 password
和 salt
存储进新的 PBEKeySpec
对象前将其复制。
password
- 密码。
salt
- salt。
iterationCount
- 迭代计数。
keyLength
- 要导出的密钥长度。
NullPointerException
- 如果
salt
为 null。
IllegalArgumentException
- 如果
salt
为空(即 0 长度)、
iterationCount
或
keyLength
不为正。
public PBEKeySpec(char[] password, byte[] salt, int iterationCount)
password
为 null,则使用一个空 char[]。
注:在将 password
和 salt
存储进新的 PBEKeySpec
对象前将其复制。
password
- 密码。
salt
- salt。
iterationCount
- 迭代计数。
NullPointerException
- 如果
salt
为 null。
IllegalArgumentException
- 如果
salt
为空(即 0 长度),或者
iterationCount
不为正。
方法详细信息 |
---|
public final void clearPassword()
public final char[] getPassword()
注:此方法返回密码的一份副本。调用者负责在不再需要密码后清空密码信息。
IllegalStateException
- 如果密码已通过调用
clearPassword
方法被清除。
public final byte[] getSalt()
注:此方法应返回 salt 的一份副本。调用者负责在不再需要 salt 后清空 salt 信息。
public final int getIterationCount()
public final int getKeyLength()
注:此方法用于指出可变密钥大小密码的首选密钥长度。实际的密钥大小依赖于每一个提供者的实现。