public class PBEKeySpec extends Object implements KeySpec
密码可以被看作是某种原始的密钥材料,从它使用它的加密机制派生出一个密钥。
不同的PBE机制可能消耗不同的位的每一个密码字符。例如,PBE机制定义 PKCS #5看着只有低8位的每一个字符,而# PKCS 12看16位的每一个字符。
你把密码字符PBE关键创造合适的密钥厂实例。例如,一个# PKCS 5密钥工厂将只从低阶的8位密码字符构建PBE密钥,而密钥# PKCS 12厂将全部16位的每一个字符。
还注意到,这类存储密码代替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)
构造函数需要一个密码,盐,迭代次数,并导出生成可变密钥大小pbekey PBE密码密钥长度。
|
Modifier and Type | Method and Description |
---|---|
void |
clearPassword()
清除密码的内部副本。
|
int |
getIterationCount()
返回迭代计数或0,如果没有指定。
|
int |
getKeyLength()
返回要导出的密钥长度或0,如果没有指定。
|
char[] |
getPassword()
返回密码的副本。
|
byte[] |
getSalt()
如果没有指定的话,返回一个盐或空的副本。
|
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.