AES/CBC/PKCS5Padding vs AES / CBC / PKCS7Padding с 256 ключами производительность java
в настоящее время я использую AES/CBC/PKCS5Padding
для шифрования файлов на Java с 256 байт размер ключа, но при поиске я нашел на stackexchange PKCS#5-PKCS#7 обивка и упоминается,
PKCS#5 padding является подмножеством PKCS#7 padding для 8-байтовых размеров блоков
поэтому я хочу знать
- будет производительность
AES/CBC/PKCS7Padding
будет лучшеAES/CBC/PKCS5Padding
выше конфигурация? - как мы можем настроить размер блока в Java, как указано
PKCS#7 заполнение будет работать для любого размера блока от 1 до 255 байт.
мой пример кода
SecureRandom rnd = new SecureRandom();
IvParameterSpec iv = new IvParameterSpec(rnd.generateSeed(16));
KeyGenerator generator = KeyGenerator.getInstance("AES");
generator.init(256);
SecretKey k = generator.generateKey();
Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding");
c.init(Cipher.ENCRYPT_MODE, k, iv);
1 ответов
размер блока является свойством используемого алгоритма шифрования. Для AES это всегда 16 байт.
строго говоря, PKCS5Padding нельзя использовать с AES, так как он определен только для размера блока 8 байт. Я предполагаю, что AES/CBC/PKCS5Padding интерпретируется как AES/CBC / PKCS7Padding внутренне.
единственная разница между этими схемами заполнения заключается в том, что PKCS7Padding имеет размер блока в качестве параметра, а для PKCS5Padding он фиксируется на 8 байтах. Когда блок размер 8 байт они делают точно так же.