我使用的AES密码具有16字节的块大小。

如果我尝试和加密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完全相同的,即填充模式必须与密码一起指定。其填充模式来执行,取决于提供商和应在其文档中进行描述。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top