javax.crypto.spec

java.lang.Object
  继承者 javax.crypto.spec.PBEKeySpec
所有已实现的接口:
KeySpec

public class PBEKeySpec
     
extends Object
implements KeySpec

可随同基于密码的加密法 (PBE) 使用的供用户选择的密码。

可以将密码视为某种原始密钥内容,由此加密机制使用其导出一个密钥。

不同的 PBE 机制可能对每一个密码字符使用不同的位数。例如,在 PKCS #5 中定义的 PEB 机制仅仅关注每一个字符的低 8 位,而 PKCS #12 关注每一个字符的全 16 位。

通过创建一个合适的密钥工厂实例来将密码转换成为一个 PBE 密钥。例如,PKCS #5 的密钥工厂仅根据每个密码字符的低 8 位来构造 PBE 密钥,而 PKCS #12 的密钥工厂将使用每个字符的全 16 位。

还要注意,此类以 char 数组而不是 String 对象的形式存储密码(这可能更具逻辑性),因为 String 类是不可变的,当不再需要存储在其中的密码时没有任何途径来重写其内部值。因此,此类需要以 char 数组作密码,以便在完成后进行重写。

从以下版本开始:
1.4
另请参见:
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
 

构造方法详细信息

PBEKeySpec

public PBEKeySpec(char[] password)
带有一个密码的构造方法。如果指定了 null,则使用一个空 char[]。

注:在将 password 存储进新的 PBEKeySpec 对象前将其复制。

参数:
password - 密码。

PBEKeySpec

public PBEKeySpec(char[] password,
                  byte[] salt,
                  int iterationCount,
                  int keyLength)
带有生成可变密钥大小的 PBE 密码的 PBEKey 时使用的一个密码、salt、迭代计数以及导出密钥长度的构造方法。如果指定 password 为 null,则使用一个空 char[]。

注:在将 passwordsalt 存储进新的 PBEKeySpec 对象前将其复制。

参数:
password - 密码。
salt - salt。
iterationCount - 迭代计数。
keyLength - 要导出的密钥长度。
抛出:
NullPointerException - 如果 salt 为 null。
IllegalArgumentException - 如果 salt 为空(即 0 长度)、 iterationCountkeyLength 不为正。

PBEKeySpec

public PBEKeySpec(char[] password,
                  byte[] salt,
                  int iterationCount)
带有生成固定密钥大小的 PBE 密码的 PBEKey 时使用的一个密码、salt、迭代数的构造方法。如果指定 password 为 null,则使用一个空 char[]。

注:在将 passwordsalt 存储进新的 PBEKeySpec 对象前将其复制。

参数:
password - 密码。
salt - salt。
iterationCount - 迭代计数。
抛出:
NullPointerException - 如果 salt 为 null。
IllegalArgumentException - 如果 salt 为空(即 0 长度),或者 iterationCount 不为正。
方法详细信息

clearPassword

public final void clearPassword()
清空密码的内部副本。


getPassword

public final char[] getPassword()
返回密码的一份副本。

注:此方法返回密码的一份副本。调用者负责在不再需要密码后清空密码信息。

返回:
密码。
抛出:
IllegalStateException - 如果密码已通过调用 clearPassword 方法被清除。

getSalt

public final byte[] getSalt()
返回 salt 的一份副本,如果未指定则返回 null。

注:此方法应返回 salt 的一份副本。调用者负责在不再需要 salt 后清空 salt 信息。

返回:
salt。

getIterationCount

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

返回:
迭代计数。

getKeyLength

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

注:此方法用于指出可变密钥大小密码的首选密钥长度。实际的密钥大小依赖于每一个提供者的实现。

返回:
要导出的密钥长度。