gpt4 book ai didi

c# 相当于nodejs代码

转载 作者:太空宇宙 更新时间:2023-11-03 23:34:42 27 4
gpt4 key购买 nike

我需要与下面的 Nodejs 代码等效的 C# 代码。我有一些 C# 代码,但结果不一样。

//工作 Node 代码如下

    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;
}
}

最佳答案

看起来差异来自于 secret 的编码方式。在 Node 版本中,它假定它表示一个 base64 编码的字节数组,而在 C# 版本中,您将其视为普通字符串。

因此,在您的 C# 版本中,从 Base 64 编码的 secret 中读取字节数组:

var secretBytes = Convert.FromBase64String(secret);

现在你与node版本一致了:

var hmac = crypto.createHmac('sha512', new Buffer(this.secret, 'base64'));

关于c# 相当于nodejs代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34115333/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com