Размер ключа AES в Java

Тестируя RSA для шифрования ключа AES я понял, что RSA имеет только 1 блок с ограниченным размером (устанавливаемый программистом), действительно хранят зашифрованный ключ. Вопрос, когда я использую:

KeyGenerator.getInstance("AES").generateKey()

ключи AES будут иметь постоянный размер в каждом компьютере и jvm реализации?

7
задан Community 23 May 2017 в 12:23
поделиться

3 ответа

В KeyGenerator есть метод инициализации, который позволяет вам указать количество бит.

KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(128);
SecretKey key = keyGenerator.generateKey();

Будет ли это делать то, что вам нужно?

По умолчанию кажется 128-битным, но я бы не предполагал, что все JVM используют одно и то же значение по умолчанию или что оно всегда будет по умолчанию.

12
ответ дан 6 December 2019 в 15:20
поделиться

Документация Suns Java Cryptography Extension утверждает, что для ключей AES поддерживаются несколько размеров ключей, и не предоставляет никакой информации о размере по умолчанию.

Максимальный размер ключей также может варьироваться в зависимости от юрисдикционных файлов, используемых различными версиями Suns JVM.

2
ответ дан 6 December 2019 в 15:20
поделиться

Генератор ключей имеет несколько методов init () ; вы должны позвонить одному из них перед генерацией ключа.В Javadoc для KeyGenerator указано, что если вы не вызываете один из методов init () , то «каждый провайдер должен предоставить (и задокументировать) инициализацию по умолчанию».

Так что это зависит от поставщика. Поскольку вы инициализируете генератор ключей с именем алгоритма «AES», можно предположить, что вы получите ключ с размером, подходящим для AES, то есть 128, 192 или 256 бит (16, 24 и 32 байта соответственно). Но какой из них вы получите, зависит от фактического поставщика, который может зависеть от JVM и, возможно, ее конфигурации.

0
ответ дан 6 December 2019 в 15:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: