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

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

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

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

4 ответов


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

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

это сделает то, что вам нужно?

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


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

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


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

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


https://docs.oracle.com/javase/7/docs/api/javax/crypto/Cipher.html

каждая реализация платформы Java требуется для поддержки следующих стандартных преобразований шифрования с keysizes в скобках:

AES/CBC/NoPadding (128)
AES/CBC/PKCS5Padding (128)
AES/ECB/NoPadding (128)
AES/ECB/PKCS5Padding (128)
DES/CBC/NoPadding (56)
DES/CBC/PKCS5Padding (56)
DES/ECB/NoPadding (56)
DES/ECB/PKCS5Padding (56)
DESede/CBC/NoPadding (168)
DESede/CBC/PKCS5Padding (168)
DESede/ECB/NoPadding (168)
DESede/ECB/PKCS5Padding (168)
RSA/ECB/PKCS1Padding (1024, 2048)
RSA/ECB/OAEPWithSHA-1AndMGF1Padding (1024, 2048)
RSA/ECB/OAEPWithSHA-256AndMGF1Padding (1024, 2048)