Класс KeyAgreement
- java.lang.Object
-
- javax.crypto.KeyAgreement
public class KeyAgreement extends Object
Этот класс предоставляет функциональность протокола согласования ключей (или обмена ключами).
Ключи, участвующие в установлении общего секрета, создаются одним из генераторов ключей (KeyPairGenerator или KeyGenerator), KeyFactory, или в результате промежуточной фазы протокола согласования ключей.
Для каждого корреспондента в обмене ключами необходимо вызвать doPhase. Например, если этот обмен ключами происходит с одной другой стороной, необходимо вызвать doPhase один раз, установив флаг lastPhase в значение true. Если этот обмен ключами происходит с двумя другими сторонами, необходимо вызвать doPhase дважды, в первый раз установив флаг lastPhase в значение false, а во второй раз — в значение true. В обмене ключами может участвовать любое количество сторон.
Каждая реализация Java платформы обязана поддерживать следующие стандартный KeyAgreement алгоритм:
DiffieHellman
- Since:
- 1.4
- См. также:
-
KeyGenerator,SecretKey
Краткое описание конструкторов
| Модификатор | Конструктор и описание |
|---|---|
protected |
KeyAgreement(KeyAgreementSpi keyAgreeSpi,
Provider provider,
String algorithm) Создаёт объект KeyAgreement. |
Краткое описание методов
| Модификатор и тип | Метод и описание |
|---|---|
Key |
doPhase(Key key,
boolean lastPhase) Выполняет следующую фазу этого соглашения о ключах с заданным ключом, полученным от одной из других сторон, участвующих в этом соглашении о ключах. |
byte[] |
generateSecret() Генерирует общий секрет и возвращает его в новом буфере. |
int |
generateSecret(byte[] sharedSecret,
int offset) Генерирует общий секрет и помещает его в буфер |
SecretKey |
generateSecret(String algorithm) Создаёт общий секрет и возвращает его как объект |
String |
getAlgorithm() Возвращает имя алгоритма этого объекта |
static KeyAgreement |
getInstance(String algorithm) Возвращает объект |
static KeyAgreement |
getInstance(String algorithm,
Provider provider) Возвращает объект |
static KeyAgreement |
getInstance(String algorithm,
String provider) Возвращает объект |
Provider |
getProvider() Возвращает поставщика этого объекта |
void |
init(Key key) Инициализирует это согласование ключей с данным ключом, который должен содержать все параметры алгоритма, необходимые для этого согласования ключей. |
void |
init(Key key,
AlgorithmParameterSpec params) Инициализирует это согласование ключей с заданным ключом и набором параметров алгоритма. |
void |
init(Key key,
AlgorithmParameterSpec params,
SecureRandom random) Инициализирует это согласование ключей с заданным ключом, набором параметров алгоритма и источником случайных чисел. |
void |
init(Key key,
SecureRandom random) Инициализирует это согласование ключей с данным ключом и источником случайных чисел. |
Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Конструкторы
KeyAgreement
protected KeyAgreement(KeyAgreementSpi keyAgreeSpi,
Provider provider,
String algorithm) Создаёт объект KeyAgreement.
- Параметры:
-
keyAgreeSpi- делегат -
provider- поставщик -
algorithm- алгоритм
Методы
getAlgorithm
public final String getAlgorithm()
Возвращает имя алгоритма этого объекта KeyAgreement.
Это то же имя, что было указано в одном из вызовов getInstance, которые создали этот объект KeyAgreement.
- Возвращает:
- имя алгоритма этого объекта
KeyAgreement.
getInstance
public static final KeyAgreement getInstance(String algorithm)
throws NoSuchAlgorithmException Возвращает объект KeyAgreement, который реализует указанный алгоритм согласования ключей.
Этот метод перебирает список зарегистрированных поставщиков безопасности, начиная с наиболее предпочтительного. Возвращается новый объект KeyAgreement, инкапсулирующий реализацию KeyAgreementSpi из первого поставщика, который поддерживает указанный алгоритм.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Параметры:
-
algorithm- стандартное имя запрашиваемого алгоритма согласования ключей. Сведения о стандартных именах алгоритмов см. в разделе KeyAgreement в документации Java Cryptography Architecture по стандартным именам алгоритмов. - Возвращает:
- новый объект
KeyAgreement. - Исключения:
-
NullPointerException- если указанный алгоритм равен null. -
NoSuchAlgorithmException- если ни один поставщик не поддерживает реализацию KeyAgreementSpi для указанного алгоритма. - См. также:
Provider
getInstance
public static final KeyAgreement getInstance(String algorithm,
String provider)
throws NoSuchAlgorithmException,
NoSuchProviderException Возвращает объект KeyAgreement, который реализует указанный алгоритм согласования ключей.
Возвращается новый объект KeyAgreement, инкапсулирующий реализацию KeyAgreementSpi от указанного поставщика. Указанный поставщик должен быть зарегистрирован в списке поставщиков безопасности.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Параметры:
-
algorithm- стандартное имя запрашиваемого алгоритма согласования ключей. Сведения о стандартных именах алгоритмов см. в разделе KeyAgreement в документации Java Cryptography Architecture по стандартным именам алгоритмов. -
provider- имя поставщика. - Возвращает:
- новый объект
KeyAgreement. - Исключения:
-
NullPointerException- если указанный алгоритм равен null. -
NoSuchAlgorithmException- если реализация KeyAgreementSpi для указанного алгоритма недоступна от указанного поставщика. -
NoSuchProviderException- если указанный поставщик не зарегистрирован в списке поставщиков безопасности. -
IllegalArgumentException- если указанныйproviderявляется null или пустым. - См. также:
Provider
getInstance
public static final KeyAgreement getInstance(String algorithm,
Provider provider)
throws NoSuchAlgorithmException Возвращает объект KeyAgreement, который реализует указанный алгоритм согласования ключей.
Возвращается новый объект KeyAgreement, инкапсулирующий реализацию KeyAgreementSpi от указанного объекта Provider. Обратите внимание, что указанный объект Provider не обязательно должен быть зарегистрирован в списке поставщиков.
- Параметры:
-
algorithm- стандартное имя запрашиваемого алгоритма согласования ключей. Сведения о стандартных именах алгоритмов см. в разделе KeyAgreement в документации Java Cryptography Architecture по стандартным именам алгоритмов. -
provider- поставщик. - Возвращает:
- новый объект
KeyAgreement. - Исключения:
-
NullPointerException- если указанный алгоритм равен null. -
NoSuchAlgorithmException- если реализация KeyAgreementSpi для указанного алгоритма недоступна от указанного объекта Provider. -
IllegalArgumentException- если указанныйproviderравен null. - См. также:
Provider
getProvider
public final Provider getProvider()
Возвращает поставщика этого объекта KeyAgreement.
- Возвращает:
- поставщик этого объекта
KeyAgreement
init
public final void init(Key key)
throws InvalidKeyException Инициализирует это согласование ключей с заданным ключом, который должен содержать все параметры алгоритма, необходимые для этого согласования ключей.
Если этому согласованию ключей требуются какие-либо случайные байты, они будут получены с использованием реализации SecureRandom поставщика с наивысшим приоритетом в качестве источника случайности. (Если ни один из установленных поставщиков не предоставляет реализацию SecureRandom, будет использован системный источник случайности.)
- Параметры:
-
key- частная информация стороны. Например, в случае согласования ключей Диффи-Хеллмана это будет собственный закрытый ключ Диффи-Хеллмана стороны. - Исключения:
-
InvalidKeyException- если заданный ключ не подходит для этого согласования ключей, например, имеет неправильный тип или несовместимый тип алгоритма.
init
public final void init(Key key,
SecureRandom random)
throws InvalidKeyException Инициализирует это согласование ключей с заданным ключом и источником случайности. Заданный ключ должен содержать все параметры алгоритма, необходимые для этого согласования ключей.
Если алгоритму согласования ключей требуются случайные байты, они берутся из указанного источника случайности, random. Однако, если реализация базового алгоритма не требует случайных байтов, random игнорируется.
- Параметры:
-
key- частная информация стороны. Например, в случае согласования ключей Диффи-Хеллмана это будет собственный закрытый ключ Диффи-Хеллмана стороны. -
random- источник случайности - Исключения:
-
InvalidKeyException- если заданный ключ не подходит для этого согласования ключей, например, имеет неправильный тип или несовместимый тип алгоритма.
init
public final void init(Key key,
AlgorithmParameterSpec params)
throws InvalidKeyException,
InvalidAlgorithmParameterException Инициализирует это согласование ключей с заданным ключом и набором параметров алгоритма.
Если этому согласованию ключей требуются какие-либо случайные байты, они будут получены с использованием реализации SecureRandom поставщика с наивысшим приоритетом в качестве источника случайности. (Если ни один из установленных поставщиков не предоставляет реализацию SecureRandom, будет использован системный источник случайности.)
- Параметры:
-
key- частная информация стороны. Например, в случае согласования ключей Диффи-Хеллмана это будет собственный закрытый ключ Диффи-Хеллмана стороны. -
params- параметры согласования ключей - Исключения:
-
InvalidKeyException- если заданный ключ не подходит для этого согласования ключей, например, имеет неправильный тип или несовместимый тип алгоритма. -
InvalidAlgorithmParameterException- если заданные параметры не подходят для этого согласования ключей.
init
public final void init(Key key,
AlgorithmParameterSpec params,
SecureRandom random)
throws InvalidKeyException,
InvalidAlgorithmParameterException Инициализирует это согласование ключей с заданным ключом, набором параметров алгоритма и источником случайности.
- Параметры:
-
key- частная информация стороны. Например, в случае согласования ключей Диффи-Хеллмана это будет собственный закрытый ключ Диффи-Хеллмана стороны. -
params- параметры согласования ключей -
random- источник случайности - Исключения:
-
InvalidKeyException- если заданный ключ не подходит для этого согласования ключей, например, имеет неправильный тип или несовместимый тип алгоритма. -
InvalidAlgorithmParameterException- если заданные параметры не подходят для этого согласования ключей.
doPhase
public final Key doPhase(Key key,
boolean lastPhase)
throws InvalidKeyException,
IllegalStateException Выполняет следующую фазу этого согласования ключей с заданным ключом, полученным от одной из других сторон, участвующих в этом согласовании ключей.
- Параметры:
-
key- ключ для этой фазы. Например, в случае Диффи-Хеллмана между 2 сторонами это будет открытый ключ Диффи-Хеллмана другой стороны. -
lastPhase- флаг, указывающий, является ли это последней фазой этого согласования ключей. - Возвращает:
- результирующий (промежуточный) ключ этой фазы или null, если эта фаза не приводит к ключу
- Исключения:
-
InvalidKeyException- если заданный ключ не подходит для этой фазы. -
IllegalStateException- если это согласование ключей не было инициализировано.
generateSecret
public final byte[] generateSecret()
throws IllegalStateException Генерирует общий секрет и возвращает его в новом буфере.
Этот метод сбрасывает этот объект KeyAgreement, чтобы его можно было повторно использовать для дальнейших согласований ключей. Если это согласование ключей не переинициализировано одним из методов init, для последующих согласований ключей будут использованы те же частная информация и параметры алгоритма.
- Возвращает:
- новый буфер с общим секретом
- Исключения:
-
IllegalStateException- если это согласование ключей еще не завершено
generateSecret
public final int generateSecret(byte[] sharedSecret,
int offset)
throws IllegalStateException,
ShortBufferException Генерирует общий секрет и помещает его в буфер sharedSecret, начиная с offset включительно.
Если буфер sharedSecret слишком мал для хранения результата, выбрасывается исключение ShortBufferException. В этом случае этот вызов следует повторить с большим буфером вывода.
Этот метод сбрасывает этот объект KeyAgreement, чтобы его можно было повторно использовать для дальнейших согласований ключей. Если это согласование ключей не переинициализировано одним из методов init, для последующих согласований ключей будут использованы те же частная информация и параметры алгоритма.
- Параметры:
-
sharedSecret- буфер для общего секрета -
offset- смещение вsharedSecret, где будет храниться общий секрет - Возвращает:
- количество байтов, помещенных в
sharedSecret - Исключения:
-
IllegalStateException- если этот процесс обмена ключами еще не завершен -
ShortBufferException- если предоставленный буфер вывода слишком мал для хранения секрета
generateSecret
public final SecretKey generateSecret(String algorithm)
throws IllegalStateException,
NoSuchAlgorithmException,
InvalidKeyException Создает общий секрет и возвращает его как объект SecretKey указанного алгоритма.
Этот метод сбрасывает этот объект KeyAgreement, чтобы его можно было повторно использовать для дальнейших обменов ключами. Если этот обмен ключами не повторно инициализирован с помощью одного из методов init, будут использоваться те же частные данные и параметры алгоритма для последующих обменов ключами.
- Параметры:
-
algorithm- запрашиваемый алгоритм секретного ключа - Возвращает:
- общий секретный ключ
- Исключения:
-
IllegalStateException- если этот процесс обмена ключами еще не завершен -
NoSuchAlgorithmException- если указанный алгоритм секретного ключа недоступен -
InvalidKeyException- если материал общего секретного ключа нельзя использовать для генерации секретного ключа указанного алгоритма (например, материал ключа слишком короткий)
© 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.