veloces twofish tipos son simétricos serpent seguros que por paso más los encriptar encriptacion descifrar como codigo cifrado cbc bloques asimétricos algoritmos algoritmo java encryption aes pkcs#7 pkcs#5

java - twofish - los algoritmos simétricos son más seguros y veloces que los algoritmos asimétricos



AES/CBC/PKCS5Padding vs AES/CBC/PKCS7Padding con 256 tamaño de clave de rendimiento java (1)

El tamaño de bloque es una propiedad del algoritmo de cifrado utilizado. Para AES siempre es de 16 bytes.

Así que hablando estrictamente, PKCS5Padding no se puede usar con AES ya que está definido solo para un tamaño de bloque de 8 bytes. Supongo que AES / CBC / PKCS5Padding se interpreta como AES / CBC / PKCS7Padding internamente.

La única diferencia entre estos esquemas de relleno es que PKCS7Padding tiene el tamaño de bloque como parámetro, mientras que para PKCS5Padding se fija en 8 bytes. Cuando el tamaño del Bloque es de 8 bytes, hacen exactamente lo mismo.

Actualmente estoy usando AES/CBC/PKCS5Padding para encriptar archivos en Java con un tamaño de clave de 256 bytes , pero mientras buscaba encontré en stackexchange PKCS # 5-PKCS # 7 Padding y se menciona,

El relleno PKCS # 5 es un subconjunto de relleno PKCS # 7 para tamaños de bloques de 8 bytes

Entonces quiero saber

  1. ¿El rendimiento de AES/CBC/PKCS7Padding será mejor que AES/CBC/PKCS5Padding para la configuración anterior?
  2. ¿Cómo podemos configurar el tamaño del bloque en Java como se menciona

    El relleno PKCS # 7 funcionaría para cualquier tamaño de bloque de 1 a 255 bytes.

Mi código de muestra es,

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);