Мы реализовали алгоритм обмена ключами Диффи-Хеллмана:
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?