Cas*_*ato -2 java encryption aes
我有一些使用javax.crypto.Cipher的加密代码,当我像这样加密时,可以正常工作:
byte[] data = cipher.doFinal(srcdata); // srcdata is a byte[]
Run Code Online (Sandbox Code Playgroud)
但是我遇到了多个字节[]想要作为一个块加密的情况。所以我尝试了这个:
for (byte[] block : blocks) {
cipher.update(block);
}
byte[] data = cipher.doFinal();
Run Code Online (Sandbox Code Playgroud)
当我解码该结果时,出现以下错误:
javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:811)
at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:676)
at com.sun.crypto.provider.AESCipher.engineDoFinal(AESCipher.java:313)
at javax.crypto.Cipher.doFinal(Cipher.java:2131)
Run Code Online (Sandbox Code Playgroud)
阅读Cipher的Java文档,看来应该可以使用。
我究竟做错了什么?
cipher.update(block)返回一个byte[]数组。你把它扔掉了。发送它,或将其写入文件,或与之相关的任何事情。的结果cipher.doFinal()只是一个最终的管家byte[]阵列,您还需要发送或写入该阵列,或执行其他操作。这不是全部加密。
| 归档时间: |
|
| 查看次数: |
1391 次 |
| 最近记录: |