cipher 中 update() 和 dofinal() 方法之间的区别

2024-03-24

我读过一篇关于密码中 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(使用前将#替换为@)

cipher 中 update() 和 dofinal() 方法之间的区别 的相关文章

随机推荐