AES/CBC/PKCS5Padding vs AES/CBC/PKCS7Padding с 256 ключевыми размерами java

В настоящее время я использую AES/CBC/PKCS5Padding для шифрования файлов на Java с размером ключа 256 байт, но во время поиска я нашел на stackexchange PKCS # 5-PKCS # 7 Padding, и это упоминается,

PKCS # 5 padding - это подмножество дополнений PKCS # 7 для 8-байтовых размеров блоков

Итак, я хочу знать

  • Будет ли производительность AES/CBC/PKCS7Padding лучше, чем AES/CBC/PKCS5Padding для указанной выше конфигурации?
  • Как мы можем настроить размер блока в Java, как это указано

    PKCS # 7 padding будет работать для любого размера блока от 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 байтов, они делают то же самое.