.Net HMAC和base64编码问题

时间:2016-03-25 15:40:36

标签: c# .net hash base64 hmac

我正在尝试使用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

错误的哈希& base64结果:

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

预期的哈希& base64结果:

ODJkZjcxMDNkZThkODJkZTQ1ZTAxYzQ1ZmU2NDJiNWQxM2M2YzJiNDdkZWNhZmViYzAwOTQzMWM2NjVjNmZhNWYzZDFhZjRlOTc4ZWExYmRlOTE0MjY2MjIwNzNlYmVhYzYxYTM0NjFlZmQ0NjdlMDk3MWM3ODhiYzhlYmRiYmU=

1 个答案:

答案 0 :(得分:2)

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

步骤: