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-байтовых размеров блоков

поэтому я хочу знать

  1. будет производительность AES/CBC/PKCS7Padding будет лучше AES/CBC/PKCS5Padding выше конфигурация?
  2. как мы можем настроить размер блока в 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 байт они делают точно так же.