我计算HMAC SHA1,算法如下:
public static string Encode(string input, string key)
{
var byteArray = Encoding.ASCII.GetBytes(input);
using (var hmacsha1 = new HMACSHA1(Encoding.ASCII.GetBytes(key)))
{
using (var stream = new MemoryStream(byteArray))
{
return hmacsha1.ComputeHash(stream).Aggregate("", (s, e) => s + String.Format("{0:X2}", e), s => s);
}
}
}
考虑了hash,但是如果消息中包含\"字符(例如json序列化的对象),那么hash计算不正确,请问如何解决这个问题?
计算哈希的示例:Hello 消息,hello 键。我的代码给出了结果 9ADE18F3E0EE81A5343F4A005F795DBAF9CEEFD8,一些在线服务代码给出了完全相同的哈希值。Message hello\", key hello。我的代码给出89E81E2037598EFAB46FF882661EECD3FF409D73 一些在线服务c24001586dffaa049e74893babf11625995bd570
这是该行的 HMAC
hello"
,在 c# 中是这样写的"hello\""
:这是字符串中的 HMAC
hello\"
,在 c# 中是这样写的"hello\\\""
:在线服务接受纯形式的字符串,而不处理转义字符。