C# 带有自定义哈希算法的HMAC

C# 带有自定义哈希算法的HMAC,c#,hash,cryptography,hmac,C#,Hash,Cryptography,Hmac,有内置的HMAC(HMACSHA1-HMACSHA512…)。 但是有可能创建一个带有自定义HashAlgorithm类的HMAC吗 我尝试了HMAC.Create(“location”),但那只是抛出了一个NullReferenceException 有没有像新HMAC(HashAlgorithm)这样的构造函数 这是哈希算法(Fnv1哈希)的代码: public类Fnv1\u 32:HashAlgorithm { 私有const uint prime=0x01000193; 专用consui

有内置的HMAC(HMACSHA1-HMACSHA512…)。 但是有可能创建一个带有自定义HashAlgorithm类的HMAC吗

我尝试了
HMAC.Create(“location”)
,但那只是抛出了一个
NullReferenceException

有没有像新HMAC(HashAlgorithm)这样的构造函数

这是哈希算法(Fnv1哈希)的代码:

public类Fnv1\u 32:HashAlgorithm
{
私有const uint prime=0x01000193;
专用consuint offsetbase=0x811C9DC5;
私有uint_散列;
公共Fnv1_32()
{
这是初始化();
this.HashSizeValue=32;
}
公共覆盖无效初始化()
{
这是。_Hash=抵销基准;
}
受保护的重写void HashCore(字节[]数组,int-ibStart,int-cbSize)
{
对于(var i=ibStart;i
在.NET Framework中,您可以通过以下方式完成此任务

public class HMACFnv1_32 : HMAC
{
    private const string Fnv1CryptoConfigId = "Fnv1_32";

    static HMACFnv1_32()
    {
        CryptoConfig.AddAlgorithm(typeof(Fnv1_32), Fnv1CryptoConfigId);
    }

    public HMACFnv1_32(byte[] key)
    {
        HashName = Fnv1CryptoConfigId;
        HashSizeValue = 32;
        Key = key;
    }
}

在.NET内核上,HMAC实现已被删除,所有内置HMAC类都将调用系统加密库来执行HMAC计算。因此,您需要自己编写HMAC,以使用带有.NET核心的自定义摘要。

在.NET Framework中,您可以通过以下方式实现这一点:

public class HMACFnv1_32 : HMAC
{
    private const string Fnv1CryptoConfigId = "Fnv1_32";

    static HMACFnv1_32()
    {
        CryptoConfig.AddAlgorithm(typeof(Fnv1_32), Fnv1CryptoConfigId);
    }

    public HMACFnv1_32(byte[] key)
    {
        HashName = Fnv1CryptoConfigId;
        HashSizeValue = 32;
        Key = key;
    }
}

在.NET内核上,HMAC实现已被删除,所有内置HMAC类都将调用系统加密库来执行HMAC计算。因此,您需要自己编写HMAC来使用.NET核心的自定义摘要。

我似乎找不到任何
初始化key
方法。有人知道为什么吗?(我在.NET4.6.1上)编辑:
InitializeKey
方法是内部的。那么还有其他选择吗?看起来像是设置
属性调用InitializeKey。更新了代码。我试着按照建议执行SHA3-512,但是luckI似乎找不到任何
InitializeKey
方法。有人知道为什么吗?(我在.NET4.6.1上)编辑:
InitializeKey
方法是内部的。那么还有其他选择吗?看起来像是设置
属性调用InitializeKey。更新了代码。我尝试实现了一些建议执行的SHA3-512,但是没有luckI可以肯定地告诉你一件事:使用此哈希函数的HMAC是不安全的。创建存在主义伪造是微不足道的,即使你确实解决了尺寸太小的突出问题……我可以肯定地告诉你一件事:使用此哈希函数的HMAC是不安全的。制造存在主义伪造品是微不足道的,即使你解决了尺寸太小的突出问题。。。