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
MACTripleDES,派生自KeyedHashAlgorithm,也有一个HashCore 方法,但它与HMAC 中的方法不同。这个HashCore方法被定义为专门使用TripleDES来计算MAC。因此,您不能“指定要使用哪种类型的哈希函数”。
由于TripleDES 不是散列函数,它不应该也不应该从HMAC 派生。
附录:
根据现已撤回的 FIPS 113 文件:
3 代 DAC
数据认证算法 (DAA) 使用数据
FIPS 中指定的加密标准 (DES) 加密算法
PUB 46. DES 算法转换(或加密)64 位输入
使用加密密钥将向量转换为 64 位输出向量。设 D 为
任何 64 位输入向量并假设已选择一个键。 64 位
向量,O,是 DES 时 DES 算法的输出
应用到 D,使用加密操作,表示为
跟随。
O = e(D)
要验证的数据(例如,记录、文件、消息或程序)
被分组为连续的 64 位块:D1、D2、.... Dn。如果数
数据位不是 64 的倍数,则最终输入块将
是部分数据块,左对齐。附加零
形成一个完整的 64 位块。 DAC的计算由下式给出
以下等式其中 + 表示两个的异或
向量。
01 = e(D1)
02 = e(D2 + 01)
03 = e(D3 + 02)
开 = e(Dn + 0n-1)
DAC 是从 On 中选择的。实施 DAA 的设备应
能够选择 On 的最左边 M 位作为 DAC,其中 16
如您所见,它是使用 CBC 模式加密的数据(以 64 位块形式)。 MAC 是最后一个被截断为 24 到 56 位(含)的加密数据块。
尽管 FIPS 113 将 DES 指定为算法,但同样适用于 TripleDES。
注意: 因为DES 和TripleDES 被认为是不安全的,所以MACTripleDES 也是如此。这就是 FIPS 113 被撤销的原因。