gpt4 book ai didi

c# - 使用 C# 生成带 key 的 HMAC SHA256 的标准代码是什么

转载 作者:行者123 更新时间:2023-11-30 16:44:16 32 4
gpt4 key购买 nike

我想知道是否有使用 key 生成 SHA256 哈希的标准代码。我遇到过几种类型的代码,但是它们不会生成相同的输出。

代码位于 JokeCamp

private string CreateToken(string message, string secret)
{
secret = secret ?? "";
var encoding = new System.Text.ASCIIEncoding();
byte[] keyByte = encoding.GetBytes(secret);
byte[] messageBytes = encoding.GetBytes(message);
using (var hmacsha256 = new HMACSHA256(keyByte))
{
byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
return Convert.ToBase64String(hashmessage);
}
}

这是我找到的另一个

private static string ComputeHash(string apiKey, string message)
{
var key = Encoding.UTF8.GetBytes(apiKey);
string hashString;
using (var hmac = new HMACSHA256(key))
{
var hash = hmac.ComputeHash(Encoding.UTF8.GetBytes(message));
hashString = Convert.ToBase64String(hash);
}

return hashString;
}

这两个生成的代码与 http://www.freeformatter.com/hmac-generator.html#ad-output 生成的代码不同

我将为我们的外部 API 之一使用 SHA256,消费者可以在其中散列数据并将其发送给我们。所以我们只是想确保我们使用标准方法,以便他们向我们发送正确的哈希值。另外,我想知道是否有任何知名的 nugets。我也尝试过使用 Bouncy CaSTLe 找到解决方案,但是,我找不到使用 key 进行哈希处理的解决方案。

最佳答案

不同之处在于字符编码(示例中的 ASCII 与 UTF-8)。请注意,哈希算法采用字节数组,并且您事先将字符串转换为该字节数组。

你的问题“什么是标准代码”可能没有答案,我说如果你希望输入包含来自 just ASCII 字符空间的内容,那就去吧,如果不去UTF-8。无论哪种方式 - 将其传达给您的用户

如果您想从可用性的角度来看待它并使其成为您用户的最佳选择 - 两者兼而有之。双向哈希内容并再次检查用户传入的哈希值,但这完全取决于您对时钟周期、安全性和可用性的评估(您可以有两个)

关于c# - 使用 C# 生成带 key 的 HMAC SHA256 的标准代码是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43796468/

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