hmac_sha1 也没有什么特别的,只是有些接口提供商在讲解他们的签名原理时,没有说清楚,导致最终在编码成 Base64 时,出现不一致的结论。
using (HMACSHA1 hmac = new HMACSHA1()) { hmac.Key = Encoding.UTF8.GetBytes(privateKey); byte[] resultBuffer = hmac.ComputeHash(Encoding.UTF8.GetBytes(text)); return resultBuffer; }
注意
如上我们直接返回的是 byte[],而不是 Encoding.UTF8.GetString(byte[]),因为 HMACSHA1 结果在 GetString 后是乱码,所以不要 GetString,而是直接返回 byte[],外面再做 Base64 处理。