【发布时间】:2010-09-25 08:16:30
【问题描述】:
我正在使用 16 字节块大小的 AES 密码。
如果我尝试加密一个 16 字节的字符串,我没有问题,但任何其他长度不是 16 的倍数都会引发异常。
我知道使用 3-DES,您可以将填充类型指定为算法的一部分,并且无需额外工作(例如 DES/CBC/PKCS5Padding)即可处理,但是有没有办法使用 AES 来指定呢?
或者我是否需要手动将 pytes 填充到 16 的倍数,然后在解密时剥离它们?这是一个简短的代码示例。
encrypt = Cipher.getInstance("AES", provider);
encrypt.init(Cipher.ENCRYPT_MODE, key) ;
byte[] encrypted = encrypt.doFinal(plainTxt.getBytes()) ;
感谢所有回复!
提前致谢, 夏兰
【问题讨论】:
-
迂腐评论:根据定义,AES 只有 16 字节块大小。 Rijndael(原始名称和规范)的块大小为 16,24 和 32 字节,但在 AES 中仅允许使用 16 字节块。 Rijndael 还支持密钥大小 128、160、192、224、256,但 AES 仅支持 128、192 和 256。
标签: java encryption aes padding