public class PBEKeySpec extends Object implements KeySpec
该密码可以被看作是某种原始密钥材料,使用它的加密机制从该密钥材料获得加密密钥。
不同的PBE机制可能会消耗每个密码字符的不同位。 例如,在定义的PBE机构PKCS #5着眼于仅低阶8个的每个字符的比特,而PKCS#12着眼于每个字符的所有16位。
您可以通过创建相应密钥工厂的实例将密码字符转换为PBE密钥。 例如,PKCS#5的秘密密钥工厂将仅从每个密码字符的低位8位构造一个PBE密钥,而PKCS#12的秘密密钥工厂将占用每个字符的所有16位。
 还要注意,这个类将密码存储为char数组而不是String对象(这似乎更合乎逻辑),因为String类是不可变的,当不再需要存储在其中的密码时,没有办法覆盖其内部值。 因此,该类将该密码作为char数组请求,因此在完成后可以被覆盖。 
SecretKeyFactory , PBEParameterSpec 
       | Constructor and Description | 
|---|
| PBEKeySpec(char[] password)
              使用密码的构造方法。 
             | 
| PBEKeySpec(char[] password, byte[] salt, int iterationCount)
              构造函数采用密码,盐,迭代计数,生成固定密钥大小的PBE密码的PBEKey。 
             | 
| PBEKeySpec(char[] password, byte[] salt, int iterationCount, int keyLength)
              构造函数,它使用密码,盐,迭代计数和待导出密钥长度来生成可变密钥大小的PBE密码的PBEKey。 
             | 
| Modifier and Type | Method and Description | 
|---|---|
| void | clearPassword()
              清除密码的内部副本。 
             | 
| int | getIterationCount()
              返回迭代计数,如果未指定则返回0。 
             | 
| int | getKeyLength()
              返回要导出的密钥长度,如果未指定则返回0。 
             | 
| char[] | getPassword()
              返回密码的副本。 
             | 
| byte[] | getSalt()
              如果没有指定,则返回salt的副本。 
             | 
public PBEKeySpec(char[] password)
 注意: password被存储在新的PBEKeySpec对象之前被克隆。 
password - 密码。 
           public PBEKeySpec(char[] password,
                  byte[] salt,
                  int iterationCount,
                  int keyLength) 
          password 。 
            注意: password和salt在被存储在新的PBEKeySpec对象之前被克隆。 
password - 密码。 
           salt - 盐。 
           iterationCount - 迭代计数。 
           keyLength - 要导出的密钥长度。 
           NullPointerException - 如果 
            salt为空。 
           IllegalArgumentException - 如果 
            salt为空,即0长度, 
            iterationCount或 
            keyLength不为正。 
           public PBEKeySpec(char[] password,
                  byte[] salt,
                  int iterationCount) 
          password 。 
            注意: password和salt在被存储在新的PBEKeySpec对象之前被克隆。 
password - 密码。 
           salt - 盐。 
           iterationCount - 迭代计数。 
           NullPointerException - 如果 
            salt为空。 
           IllegalArgumentException - 如果 
            salt为空,即0长度,或 
            iterationCount不为正。 
           public final void clearPassword()
public final char[] getPassword()
注意:此方法返回密码的副本。 呼叫者有责任在不再需要密码信息后将其清除。
IllegalStateException - 如果通过调用 
            clearPassword方法清除了密码。 
           public final byte[] getSalt()
注意:此方法应返回盐的副本。 呼叫者有责任在不再需要盐信息后将其清除掉。
public final int getIterationCount()
public final int getKeyLength()
注意:这用于指示可变密钥大小密码对密钥长度的偏好。 实际的密钥大小取决于每个提供者的实现。
 Submit a bug or feature 
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
 Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.