如何将createHmac从节点转换为C#?

时间:2018-11-28 18:12:32

标签: javascript c# .net node.js

我在节点中有以下代码:

const crypto = require('crypto')
 const token = crypto.createHmac('sha1', 'value'+'secretValue').update('value').digest('hex');

我需要转换为C#,但是在.net中为sha1进行转换的默认代码无效(实际上,结果与节点不同)。

如何转换为C#?

1 个答案:

答案 0 :(得分:1)

这是在C#中生成SHA1 Hmac的方式:

string GenerateHmac(string input, string key)
{
    var inputBytes = Encoding.UTF8.GetBytes(input);
    var keyBytes = Encoding.UTF8.GetBytes(key);

    using (var memoryStream = new MemoryStream(inputBytes))
    {
        using (var hmacSha1 = new HMACSHA1(keyBytes))
        {
            return hmacSha1.ComputeHash(memoryStream).Aggregate("", 
                (aggregator, singleByte) => aggregator + singleByte.ToString("X2"), aggregator => aggregator);
        }
    }
}

// somewhere in your code
var value = "value";
var secretValue = "secretValue";

var hmac = GenerateHmac(value, value + secretValue);
// hmac is "0B3A72A9AF80D0E5F2CEDDCA12EE21E90DD590DE"

让我知道这是否不是您想要的东西,我会尽力帮助您!