我读过一篇关于密码中 update() 和 dofinal() 方法之间差异的文章。
这是关于如果我们想要加密 4 字节数组(当密码的块大小为 8 字节)时会发生什么。如果我们在这里调用 update 它将返回 null。我的问题是:如果我们用 4 字节数组调用 doFinal() 进行加密,并且缓冲区大小为 8 字节,会发生什么情况,我们将在返回时收到多少字节的编码数据?
update()
:一次又一次地输入数据,使您能够加密长文件、流。
dofinal()
:如果有请求且必要的话,将请求的填充方案应用于数据,然后加密。 ECB 和 CBC 模式需要填充,但 CTR 模式不需要。如果 NOPADDING 使用了一些库可能偷偷垫 https://stackoverflow.com/questions/19385412/is-correct-to-use-cbc-with-nopadding-in-aes-encryption,在其他情况下,您必须自己处理填充。
你打电话时,dofinal()
对于4字节数据,如果没有设置NOPADDING,则会先填充然后加密。
来自 Java 文档;
-
update(byte[] input)
继续多部分加密或解密操作(取决于此密码的初始化方式),处理另一个数据部分。
-
doFinal()
完成多部分加密或解密操作,具体取决于此密码的初始化方式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)