首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AES/CBC/ java 5填充与AES/CBC/java 7填充

AES/CBC/ java 5填充与AES/CBC/java 7填充
EN

Stack Overflow用户
提问于 2013-12-25 07:10:52
回答 1查看 103.7K关注 0票数 33

我目前正在使用AES/CBC/PKCS5Padding加密中的256字节密钥大小的文件,但是在搜索时我在StackExchangePKCS#5-PKCS#7 Padding上找到并提到了,

PKCS#5填充是用于8字节块大小的PKCS#7填充的子集。

所以我想知道

  1. 对于上述配置,AES/CBC/PKCS7Padding的性能会比AES/CBC/PKCS5Padding好吗?
  2. 我们如何在Java中配置块大小,就像前面提到的,PKCS#7填充对于从1到255个字节的任何块大小都是有效的。

我的样本代码是,

代码语言:javascript
复制
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);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-25 07:20:57

块大小是使用的密码算法的一个属性。对于AES来说,它总是16字节。

因此严格地说,PKCS5Padding不能与AES一起使用,因为它只定义了8个字节的块大小。我猜想,AES/CBC/PKCS5Padd在内部被解释为AES/CBC/ assume 7填充。

这些填充方案之间唯一的区别是,PKCS7Padding以块大小作为参数,而对于PKCS5Padding,则将其固定为8字节。当块大小为8字节时,它们的操作完全相同。

票数 53
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20770072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档