java.lang.Objectjavax.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()
注:此方法用于指出可变密钥大小密码的首选密钥长度。实际的密钥大小依赖于每一个提供者的实现。