javax.crypto AES加密 - 我只需要调用doFinal吗?

Kyl*_*yle 2 java encryption aes

我想用Java做AES CBC加密.我正在使用javax.crypto.在我Cipher初始化之后,我是否只需要调用doFinalclear字节来正确加密它?或者我需要做些什么update

文档说更新:

继续多部分加密或解密操作

和doFinal

在单部分操作中加密或解密数据,或完成多部分操作

多部分加密究竟是什么意思?

Rem*_*anu 6

doFinal 在最后一个块中添加PKCS7 填充.所以你可以多次调用更新零,但最后一次调用应该是一个doFinal.多部分加密是指数据在内存中不连续的情况.典型示例是从套接字接收的缓冲区.您设置密码,然后开始调用update以逐块加密或解密数据,并通过附加update返回的块来构建加密/解密数据.在最后一个输入块上调用doFinal,返回的块是最后一个要附加到输出数据的块.在ecnrypting上,doFinal将添加填充.在解密时,doFinal将验证并删除填充.

  • 如果数据不连续,您只需要进行多次更新.如果您已将它放在一个连续的块中,则可以只调用一次doFinal. (3认同)