gpt4 book ai didi

C# 相当于 Java 的 DigestUtils.md5Hex(String)?

转载 作者:行者123 更新时间:2023-11-30 01:39:11 25 4
gpt4 key购买 nike

是否有现成的 C# 相当于 Java 的 DigestUtils .md5Hex(字符串)?我的 Java 很生疏,但我可以说 DigestUtils 是 Apache Commons Codec 包的一部分,而 md5Hex(String) 方法本质上使用 MessageDigest.getInstance("MD5")。

(一个相关的花絮,Java 和 C# 代码都使用 UTF8。)

<小时/>

在最简单的测试中,我已经排除了我使用的 Java 和 C# 算法之间的任何差异。这意味着我的问题在其他地方。但是,郑重声明,这两段代码生成相同的结果:(谢谢,Alex。)

Java:

private static void printMd5Hex(String data) {
System.out.println(DigestUtils.md5Hex(data));
}

C#:

private static void printMd5Hex(string data)
{
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
byte[] dataHash = md5.ComputeHash(Encoding.UTF8.GetBytes(data));
StringBuilder sb = new StringBuilder();
foreach (byte b in dataHash)
{
sb.Append(b.ToString("x2").ToLower());
}
Console.WriteLine(sb.ToString());
}
<小时/>

为了正确解决这个问题,我的问题的根源与用于创建被散列的“数据”的格式字符串中的 Java 代码中的错误有关。本质上:

string dataFormatString = "%1$s, %2$s, %3$s, %4$s, %5$s, %6$s, %7$s, %8$s, %9$s, %10$s, %11$s, %12s";
string dataToHash = String.Format(dataFormatString, ...);

问题在于第 12 个参数。它缺少 $,这意味着数据被空格填充到最少 12 个字符,使用第一个参数作为要格式化的数据。可悲的是,编写该错误的开发人员不再在这里工作,从而剥夺了我掐住他喉咙的机会。

最佳答案

你想用c#计算md5吗?

System.Security.Cryptography.MD5CryptoServiceProvider x =
new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] bs = System.Text.Encoding.UTF8.GetBytes(password);
bs = x.ComputeHash(bs);
System.Text.StringBuilder s = new System.Text.StringBuilder();
foreach (byte b in bs)
{
s.Append(b.ToString("x2").ToLower());
}
password = s.ToString();

关于C# 相当于 Java 的 DigestUtils.md5Hex(String)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1540625/

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