Есть ключик 256 бит, который генерится KeyGenerator
таким способом:
KeyGenerator keyGen = KeyGenerator.getInstance("AES");
keyGen.init(256);
key = keyGen.generateKey();
Я хочу его положить в KeyStore
, в результате я генерю его так:
KeyGenerator keyGen2 = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, KEYSTORE_TYPE);
keyGen2.init(new KeyGenParameterSpec.Builder(ALIAS_ANY, KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
.setBlockModes(KeyProperties.BLOCK_MODE_GCM)
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
.setKeySize(256)
.build());
this.key = keyGen2.generateKey();
В результате encrypt/decrypt уменьшает эффективность в разы. Без BLOCK_MODE_GCM
метод крашится в процессе, так же как и без ENCRYPTION_PADDING_NONE
.
Чем отличается ключ по умолчанию от моей записи для KeyStore
?
Потому что когда вы пишете в строке трансформации просто "AES", например:
KeyGenerator keyGen = KeyGenerator.getInstance("AES");
По умолчанию выбирается метод трансформации AES/ECB/PKCS5Padding
- что конечно же намного быстрее чем метод сцепления блоков GCM
Вообще обычно принято выбирать:
AES/CBC/PKCS7Padding
что является более-менее промышленным стандартом.
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Имеется 4 класса с тестами TestClass1, TestClasss2, TestClass3, TestClass4Нужно создать 2 тест сьюта, каждый из которых будет включать в себя по 2 класса и запустить...
Я понимаю что есть возможность запуска Jmeter тестов на Jenkins с GitНо как это сделать - пока не понял, вроде надо через Pipeline , но не понимаю как(вроде...
Приложение отправляет изоброжения и несколько строчекПримерно так (пишу на телефоне
Какие непроверяемые исключения чаще всего встречаются в реальных проектах? (если можно отсортировать по частоте случаемости)