gpt4 book ai didi

Java 相同输入的不同 MD5 输出?

转载 作者:行者123 更新时间:2023-11-29 05:12:51 24 4
gpt4 key购买 nike

我生成 md5 的代码看起来像

@Nonnull
static String getAuthCode(@Nonnull final String email, @Nonnull final String memberExternalId,
@Nonnull final String clientId, @Nonnull final String clientSecret) {
final MessageDigest messageDigest = getMessageDigest("MD5");
final String stringForHashCode = email + ":" + memberExternalId + ":" + clientId + ":" + clientSecret;
messageDigest.update(stringForHashCode.getBytes());
return new BigInteger(1, messageDigest.digest()).toString();
}

我运行测试作为

@Test
public void test() {
System.out.println(getAuthCode("a", "b", "c", "d"));
}

我得到输出为

306937959255909402080036399104389354327

当我在网上运行相同的测试时 website ,我得到的输出为

e6ea19c62a3763c7b78c475652c51357 

对于相同的输入 a:b:c:d

问题

  • 它们为什么不同?
  • 我怎样才能得到类似于我在网上得到的输出?哪个是 e6ea19c62a3763c7b78c475652c51357

最佳答案

评论中指出的问题一个问题——您应该定义要使用的编码。我建议使用 UTF-8,例如

messageDigest.update(stringForHashCode.getBytes(StandardCharsets.UTF_8));

但是,更大 的问题是您正在打印从摘要创建的 BigInteger - 它以十进制格式打印出来。您从在线工具中获得的结果是十六进制

虽然您可以将 BigInteger 转换为十六进制,但我个人会首先避免创建 BigInteger - 您需要计算填充等。相反,只需使用可用于将 byte[] 转换为十六进制的许多库之一,例如Apache Commons Codec与其 Hex类。

关于Java 相同输入的不同 MD5 输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27734525/

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