Класс PBEKeySpec
- java.lang.Object
-
- javax.crypto.spec.PBEKeySpec
- Все реализованные интерфейсы:
KeySpec
public class PBEKeySpec extends Object implements KeySpec
Пользовательский пароль, который можно использовать с шифрованием на основе пароля (PBE).
Пароль можно рассматривать как исходный материал ключа, из которого механизм шифрования, использующий его, выводит криптографический ключ.
Разные механизмы PBE могут использовать разные биты каждого символа пароля. Например, механизм PBE, определенный в PKCS #5, рассматривает только младшие 8 бит каждого символа, в то время как PKCS #12 рассматривает все 16 бит каждого символа.
Для преобразования символов пароля в ключ PBE необходимо создать экземпляр соответствующей фабрики секретных ключей. Например, фабрика секретных ключей для PKCS #5 сгенерирует ключ PBE, используя только младшие 8 бит каждого символа пароля, в то время как фабрика секретных ключей для PKCS #12 возьмёт все 16 бит каждого символа.
Также обратите внимание, что этот класс хранит пароли в виде массивов char, а не String объектов (что казалось бы более логичным), потому что класс String неизменяемый, и нет способа перезаписать его внутреннее значение, когда хранящийся в нём пароль больше не нужен. Таким образом, этот класс запрашивает пароль в виде массива char, чтобы его можно было перезаписать по завершении.
- С момента:
- 1.4
- См. также:
-
SecretKeyFactory,PBEParameterSpec
Конструкторы
| Конструктор | Описание |
|---|---|
PBEKeySpec(char[] password) | Конструктор, принимающий пароль. |
PBEKeySpec(char[] password,
byte[] salt,
int iterationCount) | Конструктор, принимающий пароль, соль, количество итераций для генерации PBEKey для шифров PBE с фиксированной длиной ключа. |
PBEKeySpec(char[] password,
byte[] salt,
int iterationCount,
int keyLength) | Конструктор, принимающий пароль, соль, количество итераций и длину производящегося ключа для генерации PBEKey для шифров PBE с переменной длиной ключа. |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
void | clearPassword() | Очищает внутреннюю копию пароля. |
int | getIterationCount() | Возвращает количество итераций или 0, если оно не указано. |
int | getKeyLength() | Возвращает длину производящегося ключа или 0, если она не указана. |
char[] | getPassword() | Возвращает копию пароля. |
byte[] | getSalt() | Возвращает копию соли или null, если она не указана. |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitКонструкторы
PBEKeySpec
public PBEKeySpec(char[] password)
Конструктор, принимающий пароль. Пустой массив char[] используется, если передан null.
Примечание: password клонируется перед сохранением в новый PBEKeySpec объект.
- Параметры:
-
password- пароль.
PBEKeySpec
public PBEKeySpec(char[] password,
byte[] salt,
int iterationCount,
int keyLength)Конструктор, принимающий пароль, соль, количество итераций и длину производящегося ключа для генерации PBEKey для шифров PBE с переменной длиной ключа. Пустой массив char[] используется, если для password передан null.
Примечание: password и salt клонируются перед сохранением в новый PBEKeySpec объект.
- Параметры:
-
password- пароль. -
salt- соль. -
iterationCount- количество итераций. -
keyLength- длина производящегося ключа. - Исключения:
-
NullPointerException- еслиsaltравен null. -
IllegalArgumentException- еслиsaltпустой (длины 0),iterationCountилиkeyLengthне положительны.
PBEKeySpec
public PBEKeySpec(char[] password,
byte[] salt,
int iterationCount)Конструктор, принимающий пароль, соль и количество итераций для генерации PBEKey для шифров PBE с фиксированной длиной ключа. Пустой массив char[] используется, если для password передан null.
Примечание: password и salt клонируются перед сохранением в новый PBEKeySpec объект.
- Параметры:
-
password- пароль. -
salt- соль. -
iterationCount- количество итераций. - Исключения:
-
NullPointerException- еслиsaltравен null. -
IllegalArgumentException- еслиsaltпустой (длины 0), илиiterationCountне положителен.
Методы
clearPassword
public final void clearPassword()
Очищает внутреннюю копию пароля.
getPassword
public final char[] getPassword()
Возвращает копию пароля.
Примечание: этот метод возвращает копию пароля. Ответственность вызывающей стороны - обнулить информацию о пароле после того, как она больше не нужна.
- Возвращает:
- пароль.
- Исключения:
-
IllegalStateException- если пароль был очищен вызовом методаclearPassword.
getSalt
public final byte[] getSalt()
Возвращает копию соли или null, если она не указана.
Примечание: этот метод должен возвращать копию соли. Ответственность вызывающей стороны - обнулить информацию о соли после того, как она больше не нужна.
- Возвращает:
- соль.
getIterationCount
public final int getIterationCount()
Возвращает количество итераций или 0, если оно не указано.
- Возвращает:
- количество итераций.
getKeyLength
public final int getKeyLength()
Возвращает длину производящегося ключа или 0, если она не указана.
Примечание: это используется для указания предпочтения длины ключа для шифров с переменной длиной ключа. Фактическая длина ключа зависит от реализации каждого поставщика.
- Возвращает:
- длину производящегося ключа.
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/javax/crypto/spec/PBEKeySpec.html