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

时间:2010-03-12 20:58:04

标签: java encryption aes

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

文档说更新:

  

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

和doFinal

  

加密或解密数据   单件操作,或完成一个   多部分操作

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

1 个答案:

答案 0 :(得分:6)

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