番石榴版本之间的哈希问题

时间:2014-01-22 15:55:18

标签: hash guava sha256

我正在使用guava 14来执行String散列,如下所示:

Hashing.sha256().newHasher().putString("String").hash().toString();

=>

4d1ca6dce72e20ce214b706168340683bb6b571a7c977c1a9fe029a1cc1c4d06

刚升级到guava16,

调用此函数: Hashing.sha256().newHasher().putString("String", Charsets.UTF-8).hash().toString()给了我不同的结果。

=>

b2ef230e7f4f315a28cdcc863028da31f7110f3209feb76e76fed0f37b3d8580

我怀疑旧版本使用的是默认字符集,但在guava16上切换Charsets并没有给我与guava14相同的结果。我在这里做错了什么?

2 个答案:

答案 0 :(得分:7)

如Guava 15的文档中所述,旧putString(String)方法的替换为putUnencodedChars

答案 1 :(得分:1)

正如路易斯所说,替代品是Hasher.putUnencodedChars()。或者,您可以使用HashFunction界面上的快捷方式:

Hashing.sha256().hashUnencodedChars("String").toString();