我需要将以下.Net代码转换为.Net Core:

static byte[] HmacSHA256(String data, byte[] key)
{
    String algorithm = "HmacSHA256";
    KeyedHashAlgorithm kha = KeyedHashAlgorithm.Create(algorithm);
    kha.Key = key;

    return kha.ComputeHash(Encoding.UTF8.GetBytes(data));
}


上面的代码片段用于Amazon AWS密钥签名,摘自here

我正在使用System.Security.Cryptography.Primitives 4.3.0和KeyedHashAlgorithm.Create方法不存在。查看github,我可以看到现在有Create方法,但是不支持它:

 public static new KeyedHashAlgorithm Create(string algName)
        {
            throw new PlatformNotSupportedException();
}


问题是.Net Core中我可以替代KeyedHashAlgorithm.Create(string algName)吗?

最佳答案

.Net Core似乎提供了HMACSHA256 Class,它应该正是您所需要的:

static byte[] HmacSHA256(String data, byte[] key)
{
    HMACSHA256 hashAlgorithm = new HMACSHA256(key);

    return hashAlgorithm.ComputeHash(Encoding.UTF8.GetBytes(data));
}

08-07 22:56