gpt4 book ai didi

javascript - C# SHA256 ComputeHash 结果与 CryptoJS SHA256 函数不同

转载 作者:搜寻专家 更新时间:2023-11-01 05:21:34 24 4
gpt4 key购买 nike

我有一个 C# 函数如下:

string stringvalue = "530500480530490480530480480520570480520510500490";
var encodedvalue= Encoding.Unicode.GetBytes(stringvalue);
using (HashAlgorithm ssp = System.Security.Cryptography.HashAlgorithm.Create("SHA256"))
{

var digest = ssp.ComputeHash(encodedvalue);

return BitConverter.ToString(digest);

}

我需要创建一个与上述代码匹配的 javascript 函数,以便 C# 和 JS 的最终结果相同。

目前在我的 JS 代码中,我正在使用这个:

var hash = CryptoJS.SHA256("530500480530490480530480480520570480520510500490");
var hexhash = hash.toString(CryptoJS.enc.hex);

这是我的 hexhash 的结果:

d956678c8f12c65299daf35019a9a1eb3e6eb9855fd850aeb5aafe46057d179e

但在我的 C# 代码中,这行 var digest = ssp.ComputeHash(bPass); 返回以下数组: enter image description here

我对编码了解不多。请告诉我上面的 c# 代码中填充的是什么类型的结果?如果我没记错的话,ComputeHash 正在返回字节,但我需要大量阅读才能确认这又是一个长时间的学习

我尝试了许多不同的方法来转换 JS Sha256 代码,但没有成功。我在这条特定的线路上停留了将近一天。

请帮忙。谢谢

编辑:抱歉代码错误。我已经更新了 C# 代码。 ComputeHash 接受一个数组

最佳答案

在我的示例中,我使用 System.Security.Cryptography.SHA256Managed 在 C# 中获取 SHA256。

SHA256Managed.ComputeHash 方法以一个字节数组作为参数并返回另一个字节数组。现在我们需要将您的字节数组转换回字符串。

以下代码返回与 Javascript SHA-256 相同的结果。

 byte[] bytes = Encoding.UTF8.GetBytes("530500480530490480530480480520570480520510500490");
SHA256Managed hashstring = new SHA256Managed();
byte[] hash = hashstring.ComputeHash(bytes);
string hashString = string.Empty;
foreach (byte x in hash)
{
hashString += String.Format("{0:x2}", x);
}
return(hashString);

只是为了解释:String.Format("{0:x2}", x)

  • X 表示十六进制格式。
  • 2 表示 2 个字符。

关于javascript - C# SHA256 ComputeHash 结果与 CryptoJS SHA256 函数不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35984198/

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