我不懂PHP而且我坚持一个位置可以帮助我。
我有一个PHP代码。
$binarySignature = hash_hmac('sha1', $stringToSign, $secretKey, true);
// We need to base64-encode it and then url-encode that.
$urlSafeSignature = urlencode(base64_encode($binarySignature));
有人可以告诉我上面代码中C#中的代码是什么。
答案 0 :(得分:0)
主要来自this post:
private string Hash(string message, byte[] secretKey)
{
byte[] msgBytes = System.Text.Encoding.UTF8.GetBytes(message);
byte[] hashBytes;
using (HMACSHA1 hmac = new HMACSHA1(secretKey))
{
hashBytes = hmac.ComputeHash(msgBytes);
}
var sb = new StringBuilder();
for (int i = 0; i < hashBytes.Length; i++)
sb.Append(hashBytes[i].ToString("x2"));
string hexString = sb.ToString();
byte[] toEncodeAsBytes = System.Text.ASCIIEncoding.ASCII.GetBytes(hexString);
return HttpUtility.UrlEncode(System.Convert.ToBase64String(toEncodeAsBytes));
}
答案 1 :(得分:0)
看来你需要这样的东西:
public string Encode(string input, byte [] key)
{
HMACSHA1 myhmacsha1 = new HMACSHA1(key);
byte[] byteArray = Encoding.ASCII.GetBytes( input );
MemoryStream stream = new MemoryStream( byteArray );
byte[] hashValue = myhmacsha1.ComputeHash(stream);
return hashValue.ToString();
}
另外,检查这些主题:
答案 2 :(得分:0)
致电
using (HMACSHA1 hmac = new HMACSHA1(secretKey,**true**))
{
hashBytes = hmac.ComputeHash(msgBytes);
}
我们需要传递true作为参数。对我来说它工作正常。