6

我正在使用 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()) ;

任何和所有的答复表示赞赏!

在此先感谢, Ciarán

4

1 回答 1

5

它应该与 AES 完全相同,即填充模式必须与密码一起指定。实现哪些填充模式取决于提供者,并应在其文档中进行描述。

根据 JCE 文档: http: //java.sun.com/j2se/1.5.0/docs/guide/security/jce/JCERefGuide.html#AppA 标准填充模式,如 PKCS5Padding 应该始终受到支持(至少,这就是我解释它)。

于 2008-12-05T01:13:05.690 回答