java执行MessageDigest时MessageDigest在做什么。是否多次更新?
我有一个Java方法,我正在移植到C#,它使用salt散列字符串。方法是执行如下操作
private byte[] hash(byte[] bytes, byte[] salt) {
MessageDigest digester = MessageDigest.getInstance("SHA-256");
digester.update(salt);
digester.update(bytes);
byte[] hashed = digester.digest();
return hashed;
}
我不明白双重更新函数在做什么。它真的在做什么吗
This question was reposted becauase it was wrongfully marked as duplicate. I found an answer and decided to share.
# 1 楼答案
Java中的MessageDigest和c中的HashAlgorithm的区别在于MessageDigest是有状态的,而HashAlgorithm不是。更新时,您正在将提供的字节数组追加到MessageDigest中的字节数组。这将在MessageDigest时重置。摘要被称为
在c#中,由于HashAlgorith不是有状态的,所以它只对提供的任何内容进行散列。与问题中的哈希函数等效的c#方法如下