HMACSHA256返回不正确的值

时间:2014-02-19 00:39:36

标签: c# .net cryptography

我是密码学的新手,但是我需要使用HMACSHA256来传递信息。

我写了一个测试方法来测试我的哈希方法。我使用在线生成器来散列单词:Paul并且它们都具有相同的base64值,但是当我使用下面的代码执行它时,我得到了不同的值。我尝试使用不同的编码,但我无法取回价值,你能告诉我可能出错的地方吗?

[TestClass]
public class HashGeneratorUnitTest
{
    [TestMethod]
    public void TestMethod1()
    {
        string message = "Paul";
        //Pass a string to method.
        string hashedMessage = ShaGenerator.GetHash(message);
        Assert.AreEqual("gYtcxfIdPm5OYHHAYpRSjURZUCIhhEbYt5ME0rdmMno=",
            hashedMessage);
    }
}

public static class ShaGenerator
{
    public static string GetHash(string message, string secret = "")
    {
        var enc = new System.Text.ASCIIEncoding();
        byte[] secretBytes = enc.GetBytes(secret);
        byte[] messageBytes = enc.GetBytes(message);

        using (var hmac = new HMACSHA256(secretBytes))
        {
            byte[] hashedBytes = hmac.ComputeHash(messageBytes);
            string hashedString = Convert.ToBase64String(hashedBytes);
            //Return HMACSHA256 string.
            return hashedString; //returns: "g9gc9FI2RcI3N9ApYePF+si9Uh0p0Q4u2Vm0Wy5qphk="
        }
    }
}

1 个答案:

答案 0 :(得分:2)

您正在测试的基于Web的生成器不正确。

您的实施正在返回正确的结果。

以下是基于网络的工具,可返回正确的结果:https://quickhash.com/