Какой метод KeyAgreement.generateSecret (алгоритм String) делает? - PullRequest
3 голосов
/ 17 августа 2010

Мы реализовали алгоритм обмена ключами Диффи-Хеллмана:

KeyAgreement aKeyAgree = KeyAgreement.getInstance("DH");

keyAgreement.init(myPrivateKey);
keyAgreement.doPhase(otherPublicKey)

Теперь нам нужно сгенерировать секрет для использования для шифрования AES.Есть метод generateSecret(String algorithm).Я думаю, что я должен вызывать его с аргументом 'AES'.

Но для DH я использую открытые ключи длиной 512 бит, поэтому секрет должен быть длиной 512 бит.Но AES позволяет использовать ключи длиной 256 бит как максимум.Простой метод generateSecret() без параметров возвращает 512-битный секрет DH.Но что делает generateSecret(String)?Как он преобразует 512-битный секрет в 256/128-битный ключ AES?

Ответы [ 2 ]

4 голосов
/ 17 августа 2010

Диффи-Хеллман - протокол согласования ключей;AES - это алгоритм симметричного шифрования.

Вызов без аргумента generateSecret() предоставляет ключ размера по умолчанию для алгоритма согласования ключей.Передав имя алгоритма в generateSecret, вы получите ключ с подходящим размером для вашего алгоритма (т.е. сокращенный до 256 бит для AES).

Я нашел страницу, которая показывает пример.

http://www.exampledepot.com/egs/javax.crypto/KeyAgree.html

Я ожидаю, что вы можете просто заменить «DES» в примере на «AES» или любой другой алгоритм симметричного ключа, который вы хотели бы использовать.

0 голосов
/ 20 августа 2010

Этот метод просто усекает созданныйSecret ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...