我想用Java进行AES CBC加密。我正在使用javax.crypto
。在我初始化Cipher
之后,我是否只需要在清除字节上调用doFinal
来正确加密它?或者我需要对update
做些什么吗?
文档说更新:
继续多部分加密 或解密操作
和doFinal
加密或解密数据 单件操作,或完成一个 多部分操作
多部分加密究竟是什么意思?
答案 0 :(得分:6)
doFinal在最后一个块中添加PKCS7 padding。所以你可以多次调用更新零,但最后一次调用应该是一个doFinal。多部分加密是指数据在内存中不连续的情况。典型示例是从套接字接收的缓冲区。您设置密码,然后开始调用update以逐块加密或解密数据,并通过附加update返回的块来构建加密/解密数据。在最后一个输入块上调用doFinal,返回的块是最后一个要附加到输出数据的块。在ecnrypting上,doFinal将添加填充。在解密时,doFinal将验证并删除填充。