我目前正在AES/CBC/PKCS5Padding
用于加密具有256字节密钥大小的Java文件,但在搜索时我在stackexchange PKCS#5-PKCS#7 Padding上找到了它,并且提到了,
PKCS#5填充是PKCS#7填充的子集,用于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);
Henry.. 35
块大小是使用的密码算法的属性.对于AES,它总是16个字节.
严格来说,PKCS5Padding不能与AES一起使用,因为它仅定义为8字节的块大小.我假设,AES/CBC/PKCS5Padding在内部被解释为AES/CBC/PKCS7Padding.
这些填充方案之间的唯一区别是PKCS7Padding具有块大小作为参数,而对于PKCS5Padding,它固定为8个字节.当块大小为8字节时,它们完全相同.
块大小是使用的密码算法的属性.对于AES,它总是16个字节.
严格来说,PKCS5Padding不能与AES一起使用,因为它仅定义为8字节的块大小.我假设,AES/CBC/PKCS5Padding在内部被解释为AES/CBC/PKCS7Padding.
这些填充方案之间的唯一区别是PKCS7Padding具有块大小作为参数,而对于PKCS5Padding,它固定为8个字节.当块大小为8字节时,它们完全相同.