MessageDigest.update(byte [])做什么?

Luc*_*yMe 7 java hash android salt message-digest

这到底是做什么的?我试着查一下但没找到任何东西.

询问的原因是我想将SALT byte[]合并到一个随后进行散列的值中.所以它应该像这样(伪代码):

MessageDigest.update(SALT);
MessageDigest.update(value);
digestValue = MessageDigest.digest();
// Where SALT, value and digestValue are array bytes, byte[]
Run Code Online (Sandbox Code Playgroud)

这是否同时添加SALTvalue最终摘要,还是应该将两个变量合并为一个然后再合并update一次?

我在任何文件中都找不到答案,任何澄清都将不胜感激.

谢谢,干杯.

Evg*_*eev 8

MessageDigest是statefull,呼叫MessageDigest.update(byte[] input)累积摘要更新,直到我们打电话MessageDigest.digest.运行此测试以确保:

    MessageDigest md1 = MessageDigest.getInstance("MD5");
    md1.update(new byte[] {1, 2});
    md1.update(new byte[] {3, 4});
    System.out.println(Arrays.toString(md1.digest()));

    MessageDigest md2 = MessageDigest.getInstance("MD5");
    md2.update(new byte[] {1, 2, 3, 4});
    System.out.println(Arrays.toString(md2.digest()));
Run Code Online (Sandbox Code Playgroud)

产量

[8, -42, -64, 90, 33, 81, 42, 121, -95, -33, -21, -99, 42, -113, 38, 47]
[8, -42, -64, 90, 33, 81, 42, 121, -95, -33, -21, -99, 42, -113, 38, 47]
Run Code Online (Sandbox Code Playgroud)