gpt4 book ai didi

java - 获取 Java 和 C# 之间的匹配校验和

转载 作者:行者123 更新时间:2023-11-30 05:43:20 26 4
gpt4 key购买 nike

我正在将一种为文件(base64 编码)创建校验和的方法从 C# 应用程序移植到 Java。在 C# 中,方法如下:

public static string GetChecksum(byte[] bytes)
{
using (var stream = new MemoryStream(bytes))
{
var sha = new SHA256Managed();
byte[] checksum = sha.ComputeHash(stream);
return BitConverter.ToString(checksum).Replace("-", String.Empty);
}
}

这是到目前为止我在 Java 中得到的内容,但它绝对与 C# 返回的值不匹配:

private static String getCheckSum(String base64Data) throws Exception {
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update(base64Data.getBytes("UTF-8"));
byte[] enc = md.digest();

StringBuilder sb = new StringBuilder();
for (byte b : enc) {
sb.append(String.format("%02x", b));
}

return sb.toString().replace("-", "").toUpperCase();
}

我尝试过在 getBytes() 方法中不使用字符集,我尝试过使用字符集 US-ASCII

这东西不在我的驾驶室里,我不知道如何继续。如有任何帮助,我们将不胜感激。

最佳答案

在 Java 中解码 Base64 字符串,你有这个(从 Java8 开始):

byte[] decodedBytes = Base64.getDecoder().decode(encodedString);
String decodedString = new String(decodedBytes);

来自:https://www.baeldung.com/java-base64-encode-and-decode

关于java - 获取 Java 和 C# 之间的匹配校验和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55283403/

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