- java.lang.Object
-
- javax.crypto.spec.PBEKeySpec
-
- 实现的所有接口
-
KeySpec
public class PBEKeySpec extends Object implements KeySpec
用户选择的密码,可与基于密码的加密( PBE )一起使用。密码可以被视为某种原始密钥材料,使用它的加密机制从中导出密码密钥。
不同的PBE机制可能消耗每个密码字符的不同位。 例如, PKCS #5中定义的PBE机制仅查看每个字符的低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)
构造函数,它使用密码,salt,迭代计数来生成固定密钥大小的PBE密码的PBEKey。PBEKeySpec(char[] password, byte[] salt, int iterationCount, int keyLength)
构造函数,用于获取密码,salt,迭代计数和将要派生的密钥长度,以生成可变密钥大小的PBE密码的PBEKey。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 void
clearPassword()
清除密码的内部副本。int
getIterationCount()
返回迭代计数,如果未指定则返回0。int
getKeyLength()
返回要派生的密钥长度,如果未指定,则返回0。char[]
getPassword()
返回密码的副本。byte[]
getSalt()
返回salt的副本,如果未指定,则返回null。
-
-
-
构造方法详细信息
-
PBEKeySpec
public PBEKeySpec(char[] password)
获取密码的构造函数。 如果指定null,则使用空char []。注意:
password
在存储到新的PBEKeySpec
对象之前进行克隆。- 参数
-
password
- 密码。
-
PBEKeySpec
public PBEKeySpec(char[] password, byte[] salt, int iterationCount, int keyLength)
构造函数,用于获取密码,salt,迭代计数和将要派生的密钥长度,以生成可变密钥大小的PBE密码的PBEKey。 如果为password
指定了null,则使用空char []。注意:
password
和salt
在存储到新的PBEKeySpec
对象之前进行克隆。- 参数
-
password
- 密码。 -
salt
- 盐。 -
iterationCount
- 迭代计数。 -
keyLength
- 要派生的密钥长度。 - 异常
-
NullPointerException
- 如果salt
为空。 -
IllegalArgumentException
- 如果salt
为空,即0长度,iterationCount
或keyLength
为非正数。
-
PBEKeySpec
public PBEKeySpec(char[] password, byte[] salt, int iterationCount)
构造函数,它使用密码,salt,迭代计数来生成固定密钥大小的PBE密码的PBEKey。 如果为password
指定了null,则使用空char []。注意:
password
和salt
在存储到新的PBEKeySpec
对象之前进行克隆。- 参数
-
password
- 密码。 -
salt
- 盐。 -
iterationCount
- 迭代计数。 - 异常
-
NullPointerException
- 如果salt
为空。 -
IllegalArgumentException
- 如果salt
为空,即0长度,或iterationCount
不为正。
-
-
方法详细信息
-
clearPassword
public final void clearPassword()
清除密码的内部副本。
-
getPassword
public final char[] getPassword()
返回密码的副本。注意:此方法返回密码的副本。 在不再需要密码信息后,呼叫者有责任将密码信息清零。
- 结果
- 密码。
- 异常
-
IllegalStateException
- 如果已通过调用clearPassword
方法清除密码。
-
getSalt
public final byte[] getSalt()
返回salt的副本,如果未指定,则返回null。注意:此方法应返回salt的副本。 呼叫者有责任在不再需要盐信息后将其清零。
- 结果
- 盐。
-
getIterationCount
public final int getIterationCount()
返回迭代计数,如果未指定则返回0。- 结果
- 迭代次数。
-
getKeyLength
public final int getKeyLength()
返回要派生的密钥长度,如果未指定,则返回0。注意:这用于指示可变密钥大小密码的密钥长度的首选项。 实际密钥大小取决于每个提供商的实现。
- 结果
- the to-be-derived key length.
-
-