簡體   English   中英

C#等效於Node.js代碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM