【问题标题】:.Net HMAC and base64 Encoding Issue.Net HMAC 和 base64 编码问题
【发布时间】:2016-07-13 09:27:04
【问题描述】:

我正在尝试使用secret 的秘密和foo 的有效负载创建一个base64 编码的HMAC SHA512 哈希。我无法让我的 .NET 代码产生正确的值。我想知道编码是否是根本问题。

代码:

UTF8Encoding encoding = new UTF8Encoding();
HMACSHA512 hmac = new HMACSHA512(encoding.GetBytes("secret")); // init the HMAC hash with "secret" as a byte array
byte[] hash = hmac.ComputeHash(encoding.GetBytes("foo")); // hash the payload
String result = Convert.ToBase64String(hash); // Base64 encode the payload

不正确的 hash & base64 结果:

gt9xA96Ngt5F4BxF/mQrXRPGwrR97K/rwAlDHGZcb6Xz0a9Ol46hvekUJmIgc+vqxho0Ye/UZ+CXHHiLyOvbvg==

预期的哈希和base64结果:

ODJkZjcxMDNkZThkODJkZTQ1ZTAxYzQ1ZmU2NDJiNWQxM2M2YzJiNDdkZWNhZmViYzAwOTQzMWM2NjVjNmZhNWYzZDFhZjRlOTc4ZWExYmRlOTE0MjY2MjIwNzNlYmVhYzYxYTM0NjFlZmQ0NjdlMDk3MWM3ODhiYzhlYmRiYmU=

【问题讨论】:

  • 如果你没有产生“预期”的结果,你一定是从其他地方得到的。这是在哪里看到的?
  • @dana 我有一个 node.js 程序和一个产生正确哈希值的 php 程序。

标签: c# .net hash base64 hmac


【解决方案1】:

由于第二个版本只是十六进制表示的 Base64,因此您需要先将字节数组转换为十六进制,而不是字符串的 Base64 ASCII 版本。

步骤:

【讨论】:

  • 就是这样。我已经看到了您引用的问题,但是直到您说我需要先将 byte[] 转换为十六进制之前,它才有意义。谢谢。
猜你喜欢
  • 1970-01-01
  • 2020-09-06
  • 1970-01-01
  • 1970-01-01
  • 2010-10-09
  • 1970-01-01
  • 2021-07-10
  • 2017-01-02
  • 1970-01-01
相关资源
最近更新 更多