gpt4 book ai didi

java - 不懂Guava PrimitiveSink

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:14:50 25 4
gpt4 key购买 nike

我考虑学习一些新东西,并开始在一个新的小项目中使用 Google Guava。

我要做的第一件事就是实现一个简单的基于 key 交换的身份验证。

计划是合并一些值,并生成 SHA256 哈希。

在纯 Java 中它是

    final String toHash = id + ts + secret;
final MessageDigest digest = MessageDigest.getInstance("SHA-256");
final byte[] hash = digest.digest(toHash.getBytes("UTF-8"));
final String result = getHexFormated(hash)

我在 Guava 中尝试过

    final Hasher hasher = Hashing.sha256().newHasher().putString(id, Charsets.UTF_8)
.putLong(ts).putString(secret, Charsets.UTF_8);
final HashCode hashcode = hasher.hash();

如果我将第一个结果与 hashcode.toString() 进行比较,它是完全不同的。如果我比较 byte[] 本身,请注意,不是 getHexFormated 是错误的,字节数组也完全不同。

那么这里有什么问题呢?什么是 PrimitiveSink 而不是简单组合给定值?

最佳答案

在您的第一个代码段中:

final String toHash = id + ts + secret;

其中 ts 是一个 long;但是,在上面的语句中,它将作为字符串附加。

在你的第二个片段中,你做:

.putLong(ts)

因此,你的输出会有所不同......你应该

.putString(String.valueOf(ts))

相反。

关于java - 不懂Guava PrimitiveSink,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22045184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com