我刚刚想出了信用卡的三重DES加密和解密。谁能告诉我如何解密 CBC-MAC...CBC-MAC 最后会给出一个 4 位 MAC。
这是 CBC 模式如何通过Wikipedia工作的视觉效果。
![CBC模式通过维基百科](https://upload.wikimedia.org/wikipedia/commons/thumb/8/80/CBC_encryption.svg/601px-CBC_encryption.svg.png)
CBC-MAC 所做的只是获取输出的最后一个密文块并将其称为 MAC。所以你的 MAC 应该是分组密码的大小,可能不是 4 位。如果您使用的是 3DES,它将是 64 位。
从 MAC 到加密,它究竟是如何工作的?MAC在做什么?
MAC 和加密是两个非常独立的东西。我将尝试简要介绍每个。
- 加密提供机密性,这意味着(在对称加密情况下)只有拥有正确密钥的人才能读取消息的内容。
- MAC 提供完整性,这意味着消息在发送者和接收者之间的某个地方没有被篡改。
MAC 存在的原因是即使我无法读取加密消息,我仍然可以在收件人不知道它被修改的情况下修改加密消息(这在现实世界中造成了各种令人讨厌的问题)。MAC 通常与加密消息一起发送。接收者首先计算加密消息的 MAC,然后检查它是否与随加密消息一起发送的 MAC 匹配。如果它们匹配,那么接收者就知道消息没有被篡改。
一旦通过 CBC-MAC 完成加密,我们如何解密 > 它们?Triple-DES 不适用于我的情况。
如果您使用 3DES 加密,我建议您首先加密您的消息(我们称之为 C)。我还建议使用 CBC-MAC 以外的东西,因为 CBC-MAC 不提供良好的安全性。我建议您使用HMAC计算加密消息的 MAC (HMAC(C))。这意味着您需要两个密钥,一个用于 3DES,一个用于 HMAC。大多数语言都广泛支持 HMAC,因此找到实现应该不是问题。
因此,总而言之,获取您的消息 M,计算 3DES(M) = C,然后计算 HMAC(C) = T,并将 (C, T) 发送给接收此数据的任何人。然后接收者将计算 HMAC(C) = T',检查 T' == T,如果它们匹配,则计算 3DES(C) = M 以获取原始消息。希望对您有所帮助,有很多信息,请随时提出任何澄清。:)