- java.lang.Object
-
- javax.crypto.spec.PBEKeySpec
-
- All Implemented Interfaces:
-
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
-
-
构造方法摘要
构造方法 Constructor 描述 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 方法 描述 void
clearPassword()
清除密码的内部副本。int
getIterationCount()
返回迭代计数,如果未指定则返回0。int
getKeyLength()
返回要导出的密钥长度,如果未指定则返回0。char[]
getPassword()
返回密码的副本。byte[]
getSalt()
如果没有指定,则返回salt的副本。
-
-
-
构造方法详细信息
-
PBEKeySpec
public PBEKeySpec(char[] password)
使用密码的构造方法。 如果指定了null,则使用空的char []。注意:
password
在存储在新的PBEKeySpec
对象之前被克隆。- 参数
-
password
- 密码。
-
PBEKeySpec
public PBEKeySpec(char[] password, byte[] salt, int iterationCount, int keyLength)
构造函数,它使用密码,盐,迭代计数和待导出的密钥长度来生成可变密钥大小的PBE密码的PBEKey。 如果为password
指定了null,则使用空字符[]。注意:
password
和salt
在被存储在新的PBEKeySpec
对象之前被克隆。- 参数
-
password
- 密码。 -
salt
- 盐。 -
iterationCount
- 迭代计数。 -
keyLength
- 要导出的密钥长度。 - 异常
-
NullPointerException
- 如果salt
为空。 -
IllegalArgumentException
- 如果salt
为空,即0长度,iterationCount
或keyLength
不为正。
-
PBEKeySpec
public PBEKeySpec(char[] password, byte[] salt, int iterationCount)
构造函数采用密码,盐,迭代计数,生成固定密钥大小的PBE密码的PBEKey。 如果为password
指定了null,则使用空字符[]。注意:
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的副本。注意:此方法应返回盐的副本。 呼叫者有责任在不再需要盐信息后将其清除掉。
- 结果
- 盐。
-
getIterationCount
public final int getIterationCount()
返回迭代计数,如果未指定则返回0。- 结果
- 迭代计数。
-
getKeyLength
public final int getKeyLength()
返回要导出的密钥长度,如果未指定则返回0。注意:这用于指示可变密钥大小密码对密钥长度的偏好。 实际的密钥大小取决于每个提供者的实现。
- 结果
- the to-be-derived key length.
-
-