0

我有以下代码片段在 C# 中生成 HMACSHA1 签名。下面的代码是什么

Encoding encoding = new UTF8Encoding();
HMACSHA1 hmac = new HMACSHA1(encoding.GetBytes(SecretKey.ToCharArray()));

StringBuilder data = new StringBuilder();

data.Append(Access);
data.Append(Id);
data.Append(Entity);
data.Append(Username);

string signature Convert.ToBase64String(hmac.ComputeHash(encoding.GetBytes(data.ToString().ToCharArray())));

现在我想把它翻译成红宝石,比如:

Base64.encode64(OpenSSL::HMAC.hexdigest(OpenSSL::Digest::Digest.new('sha1'), secret_key, data)

但是,对于相同的输入,结果并不相等。他们在内部使用不同的哈希算法吗?

谢谢

4

1 回答 1

0

正如响应中所建议的,问题与编码有关,而不是在生成 HMAC SHA1 哈希时使用原始字节

于 2014-02-06T22:58:03.107 回答