алгоритмы с KDF, закодированные как
я есть следующий код, который преобразует секретный ключ DH в секретный ключ AES. Это раньше работало доOracle JRE 8u161 когда они начали ограничивать создание ключей DH <1024 вjava.security
файл. Сейчас получуNoSuchAlgorithmException: Unsupported secret key algorithm AES
на последней строке.
PrivateKey privKey = null;
PublicKey pubKey = null;
PublicKey agreement = null;
KeyAgreement keyAgreement = KeyAgreement.getInstance("DH");
keyAgreement.init(privKey);
keyAgreement.doPhase(pubKey, false);
keyAgreement.doPhase(agreement, true);
SecretKey key = keyAgreement.generateSecret("AES");
Я попытался изменить последнюю строку на это. Я могу зашифровать и расшифровать, используя новые ключи, но это не работает со старыми ключами, сгенерированными ранее.
byte[] encodedKey = keyAgreement.generateSecret();
SecretKey key = new SecretKeySpec(encodedKey, 0, encodedKey.length, "AES");
Я нашел похожий вопрос такЧто делает метод KeyAgreement.generateSecret (алгоритм String)? но я все еще не знаю, как я могу это исправить, не ломая существующие ключи.