HMAC SHA256解密C#中的字符串

时间:2017-01-12 13:00:27

标签: c# encryption

如何解密HMAC SHA256加密字符串?

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);
      }
    }

如果我有结果字符串,我该如何进行逆向工程?

提前致谢。

2 个答案:

答案 0 :(得分:5)

哈希是一种单向函数,根据定义它不可逆。你想要达到的目标是什么?

如果是密码比较之类的东西,那么只需对您拥有的密码进行哈希处理,然后比较生成的哈希值。没有任何进一步的背景,很难建议。

答案 1 :(得分:1)

HMACSHA256:这是一个基于哈希的消息认证码。它用于验证不安全通道上的消息完整性。它是一种仅向前哈希算法,无法解密。它基于双方(发送方和接收方)已知的共享密钥来散列消息.Sender使用共享密钥并从原始数据计算散列值并发送原始数据和散列值,然后接收方重新计算来自原始数据的哈希值。如果两个哈希值匹配,则表示原始数据中没有调整,如果不匹配,则意味着在原始数据中调整此方案验证失败。