[英]c# equivalent of nodejs code
我需要等效於以下nodejs代碼的C#。 我有一些C#代碼,但結果不一樣。
//下面的工作節點代碼
Ice3x.prototype._signMessage = function (message) {
var hmac = crypto.createHmac('sha512',new Buffer(this.secret, 'base64'));
hmac.update(message);
var signature = hmac.digest('base64');
return signature;
}
//下面的C#代碼
public class HmacSignatureCalculator : ICalculteSignature
{
public string Signature(string secret, string value)
{
var secretBytes = Encoding.UTF8.GetBytes(secret);
var valueBytes = Encoding.UTF8.GetBytes(value);
string signature;
using (var hmac = new HMACSHA512(secretBytes))
{
var hash = hmac.ComputeHash(valueBytes);
signature = Convert.ToBase64String(hash);
}
return signature;
}
}
看起來區別在於機密的編碼方式。 在節點版本中,它假定它代表base64編碼的字節數組,而在C#版本中,您將其視為普通字符串。
因此,在您的C#版本中,從base 64編碼的機密中讀取字節數組:
var secretBytes = Convert.FromBase64String(secret);
現在您與節點版本一致:
var hmac = crypto.createHmac('sha512', new Buffer(this.secret, 'base64'));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.