C# .NET加密中MACTripleDES和HMAC的不同之处
正如标题所说,我并不真正理解键控哈希算法的两种实现之间的区别(或者准确地说,C# .NET加密中MACTripleDES和HMAC的不同之处,c#,.net,cryptography,C#,.net,Cryptography,正如标题所说,我并不真正理解键控哈希算法的两种实现之间的区别(或者准确地说,MACTripleDES和HMAC的实现之间的区别) 两者都可以ComputeHash()和HashCore()。我看到的唯一区别是,在MACTripleDES中,您可以指定要使用哪种类型的哈希函数,以及: HMAC的HashCore(): 将写入对象的数据路由到默认HMAC哈希算法中,以计算哈希值 MACTripleDES的HashCore(): 将写入对象的数据路由到TripleDES加密程序中,以计算消息身份验证码
MACTripleDES
和HMAC
的实现之间的区别)
两者都可以ComputeHash()
和HashCore()
。我看到的唯一区别是,在MACTripleDES
中,您可以指定要使用哪种类型的哈希函数,以及:
HMAC的HashCore():
将写入对象的数据路由到默认HMAC哈希算法中,以计算哈希值
MACTripleDES的HashCore():
将写入对象的数据路由到TripleDES加密程序中,以计算消息身份验证码(MAC)
根据我对MAC的了解,您可以使用键控哈希算法来消化消息,从而生成MAC。因此,在
MACTripleDES
中,您使用一些散列算法对消息进行散列,然后使用TripleDES对其进行加密以生成MAC,而在HMAC
中,您只是直接对原始消息使用一些键控散列算法?MACTripleDES
不使用散列函数来计算MAC。它使用TripleDES
,这是一种加密算法
HMAC
是一个abstract
类,意味着您不能实例化该类本身。你必须从中汲取教训
来自HMAC
的派生类在内部调用HashCore
HashCore
被重写以对每个派生类执行特定的哈希函数:
- MD5用于HMACMD5
- RIPEMD-160适用于HMACRIPEMD160
- SHA-1适用于HMACSHA1
- SHA-256适用于HMACSHA256
- SHA-386适用于HMACSHA384
- SHA-512适用于HMACSHA512
KeyedHashAlgorithm
的MACTripleDES
,也有一个HashCore
方法,但它与HMAC
中的方法不同。此HashCore
方法定义为专门使用TripleDES
来计算MAC。因此,您不能“指定要使用哪种类型的哈希函数”
由于TripleDES
不是散列函数,因此它不应该也不应该派生自HMAC
附录:
根据现已撤销的FIPS 113文件:
第三代DAC
数据认证算法(DAA)利用数据
FIPS中指定的加密标准(DES)加密算法
第46号酒吧。DES算法转换(或加密)64位输入
使用加密密钥将向量转换为64位输出向量。让我们一起去吧
任意64位输入向量,并假定已选择一个键。64位
向量O,当DES为
应用于D,使用加密操作,表示为
接着
O=e(D)
要验证的数据(例如记录、文件、消息或程序)
被分组为连续的64位块:D1、D2、,。。。。Dn。如果号码是
如果数据位不是64的倍数,则最终输入块将
是部分数据块,左对齐。将零附加到
形成完整的64位块。DAC的计算由以下公式给出:
下列等式中,+表示两个的异或
向量
01=e(D1)02=e(D2+01)
03=e(D3+02)
On=e(Dn+0n-1) DAC从On中选择。实施DAA的装置应: 能够选择On最左边的M位作为DAC,其中16位< M<64,M是8的倍数。DAC生成的框图 附录1给出了一个示例,附录2给出了一个示例。这个 初始化向量(IV)=0的密码块链接模式(CBC) 以及IV=D1且数据等于D2的64位密码反馈模式, D3、…、Dn(见FIPS PUB 81)均产生所需的DAC计算 正如您所看到的,使用CBC模式加密的是数据(64位块)。MAC是最后一个被截断为24位到56位(含24位)的加密数据块 尽管FIPS 113将
DES
指定为算法,但同样适用于TripleDES
注意:由于
DES
和TripleDES
是不安全的,因此MACTripleDES
也是不安全的。这就是FIPS 113被撤销的原因。MACTripleDES
不使用哈希函数来计算MAC。它使用TripleDES
,这是一种加密算法
HMAC
是一个abstract
类,意味着您不能实例化该类本身。你必须从中汲取教训
来自HMAC
的派生类在内部调用HashCore
HashCore
被重写以对每个派生类执行特定的哈希函数:
- MD5用于HMACMD5
- RIPEMD-160适用于HMACRIPEMD160
- SHA-1适用于HMACSHA1
- SHA-256适用于HMACSHA256
- SHA-386适用于HMACSHA384
- SHA-512适用于HMACSHA512
KeyedHashAlgorithm
的MACTripleDES
,也有一个HashCore
方法,但它与HMAC
中的方法不同。此HashCore
方法定义为专门使用TripleDES
来计算MAC。因此,您不能“指定要使用哪种类型的哈希函数”
由于TripleDES
不是散列函数,因此它不应该也不应该派生自HMAC
附录:
根据现已撤销的FIPS 113文件:
第三代DAC
数据认证算法(DAA)利用数据
加密标准