AES/CBC/PKCS5Padding 与 AES/CBC/PKCS7Padding 与 256 密钥大小性能 java [英] AES/CBC/PKCS5Padding vs AES/CBC/PKCS7Padding with 256 key size performance java
问题描述
我目前使用 AES/CBC/PKCS5Padding
用 256 字节 密钥大小加密 Java 文件,但在搜索时我在 stackexchange PKCS#5-PKCS#7 Padding 并提到,
PKCS#5 填充是 8 字节块大小的 PKCS#7 填充的子集
所以我想知道
- 对于上述配置,
AES/CBC/PKCS7Padding
的性能会比AES/CBC/PKCS5Padding
更好吗? - 我们如何配置 Java 中提到的块大小<块引用>
PKCS#7 填充适用于从 1 到 255 字节的任何块大小.
我的示例代码是,
SecureRandom rnd = new SecureRandom();IvParameterSpec iv = 新的 IvParameterSpec(rnd.generateSeed(16));KeyGenerator generator = KeyGenerator.getInstance("AES");生成器初始化(256);SecretKey k = generator.generateKey();Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding");c.init(Cipher.ENCRYPT_MODE, k, iv);
块大小是所用密码算法的属性.对于 AES,它总是 16 字节.
严格来说,PKCS5Padding 不能与 AES 一起使用,因为它仅定义为 8 字节的块大小.我假设 AES/CBC/PKCS5Padding 在内部被解释为 AES/CBC/PKCS7Padding.
这些填充方案的唯一区别是 PKCS7Padding 将块大小作为参数,而对于 PKCS5Padding,它固定为 8 个字节.当块大小为 8 字节时,它们的作用完全相同.
I am currently using AES/CBC/PKCS5Padding
for encrypting files in Java with 256 bytes key size, but while searching I found on stackexchange PKCS#5-PKCS#7 Padding and it is mentioned,
PKCS#5 padding is a subset of PKCS#7 padding for 8 byte block sizes
So I want to know
- Will the performance of
AES/CBC/PKCS7Padding
will be better thenAES/CBC/PKCS5Padding
for the above configuration? - How can we configure the block size in Java as it is mentioned
PKCS#7 padding would work for any block size from 1 to 255 bytes.
My sample code is,
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);
The block size is a property of the used cipher algorithm. For AES it is always 16 bytes.
So strictly speaking, PKCS5Padding cannot be used with AES since it is defined only for a block size of 8 bytes. I assume, AES/CBC/PKCS5Padding is interpreted as AES/CBC/PKCS7Padding internally.
The only difference between these padding schemes is that PKCS7Padding has the block size as a parameter, while for PKCS5Padding it is fixed at 8 bytes. When the Block size is 8 bytes they do exactly the same.
这篇关于AES/CBC/PKCS5Padding 与 AES/CBC/PKCS7Padding 与 256 密钥大小性能 java的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!