gpt4 book ai didi

c# - .NET 密码学中 MACTripleDES 和 HMAC 的区别

转载 作者:太空宇宙 更新时间:2023-11-03 20:55:05 25 4
gpt4 key购买 nike

正如标题所说,我真的不明白键控哈希算法的两种实现之间的区别(或者,准确地说,MACTripleDESHMAC 的实现之间的区别) >).

ComputeHash()HashCore() 都可以。我看到的唯一区别是,在 MACTripleDES 中,您可以指定要使用的散列函数类型,并且:

HMAC 的

HashCore():

Routes data written to the object into the default HMAC hash algorithm for computing the hash value.

MACTripleDES 的

HashCore():

Routes data written to the object into the TripleDES encryptor for computing the Message Authentication Code (MAC)

根据我对 MAC 的了解,您使用 key 哈希算法消化消息以生成 MAC。因此,在 MACTripleDES 中,您使用某种哈希算法对消息进行哈希处理,然后使用 TripleDES 对其进行加密以生成 MAC,而在 HMAC 中,您只是直接对原始消息使用某种 key 哈希算法消息?

最佳答案

MACTripleDES 不使用散列函数来计算 MAC。它使用TripleDES,这是一种加密算法。

HMAC 是一个抽象 类,这意味着您无法实例化该类本身。你必须从中得出。

HMAC 的派生类在内部调用HashCoreHashCore 被覆盖以对每个派生类执行特定的哈希函数:

  • MD5 用于 HMACMD5
  • RIPEMD-160 用于 HMACRIPEMD160
  • SHA-1 用于 HMACSHA1
  • SHA-256 用于 HMACSHA256
  • SHA-386 用于 HMACSHA384
  • SHA-512 用于 HMACSHA512

MACTripleDES,派生自 KeyedHashAlgorithm,也有一个 HashCore 方法,但它与 HMAC 中的方法不同>。这个HashCore方法被定义为专门使用TripleDES来计算MAC。因此,您不能“指定要使用哪种类型的哈希函数”。

由于 TripleDES 不是散列函数,因此它不应该也不会从 HMAC 派生。

附录:

根据现已撤回的 FIPS 113 文档:

3 GENERATION OF THE DAC

The Data Authentication Algorithm (DAA) makes use of the Data Encryption Standard (DES) cryptographic algorithm specified in FIPS PUB 46. The DES algorithm transforms (or encrypts) 64-bit input vectors to 64-bit output vectors using a cryptographic key. Let D be any 64-bit input vector and assume a key has been selected. The 64-bit vector, O, which is the output of the DES algorithm when DES is applied to D, using the enciphering operation, is represented as follows.

O = e(D)

The data (e.g., record, file, message, or program) to be authenticated is grouped into contiguous 64-bit blocks: D1, D2,.... Dn. If the number of data bits is not a multiple of 64, then the final input block will be a partial block of data, left justified. with zeroes appended to form a full 64-bit block. The calculation of the DAC is given by the following equations where + represents the Exclusive-OR of two vectors.

01 = e(D1)
02 = e(D2 + 01)
03 = e(D3 + 02)
On = e(Dn + 0n-1)

The DAC is selected from On. Devices which Implement the DAA shall be capable of selecting the leftmost M bits of On as the DAC, where 16 < M < 64 and M is a multiple of 8. A block diagram of the DAC generation is given in Appendix 1 and an example is given in Appendix 2. The Cipher Block Chaining Mode (CBC) with Initialization Vector (IV) = 0 and the 64-bit Cipher Feedback Mode with IV = D1 and data equal to D2, D3, ..., Dn (see FIPS PUB 81) both yield the required DAC calculation

enter image description here

如您所见,它是使用 CBC 模式加密的数据(64 位 block )。 MAC 是截断为 24 到 56 位(含)之间的最后一个加密数据 block 。

尽管 FIPS 113 将 DES 指定为算法,但同样适用于 TripleDES

注意:由于 DESTripleDES 被认为是不安全的,因此 MACTripleDES 也是如此。这就是 FIPS 113 被撤销的原因。

关于c# - .NET 密码学中 MACTripleDES 和 HMAC 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51399280/

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