我刚想出信用卡的Triple DES加密和解密。任何人都可以告诉我如何解密CBC-MAC ...最后的CBC-MAC将给出一个4字节的MAC。从MAC到加密,它究竟是如何工作的?什么是MAC做什么?
一旦通过CBC-MAC进行加密,我们如何解密它们?三重DES对我的情况不起作用。
这里的另一个问题。你们都听说过任何涉及的解密算法:
我对TDES和DUKPT有很好的理解,但MAC变体如何在解密算法中发挥作用?
MAC变体与PIN变体有何不同?
谢谢!
答案 0 :(得分:3)
我刚想出信用卡的Triple DES加密和解密。任何人都可以告诉我如何解密CBC-MAC ...最后的CBC-MAC将给出4位MAC。
以下是通过Wikipedia了解CBC模式的工作原理。
CBC-MAC所做的只是取出输出的最后一个密文块并调用MAC。所以你的MAC应该是分组密码的大小,可能不是4比特。如果你正在使用3DES,它将是64位。
从MAC到加密,它究竟是如何工作的?什么是MAC?
MAC和加密是两个非常独立的事情。我将尝试简要介绍每一个。
MAC存在的原因是,即使我无法读取加密的消息,我仍然可以修改加密的消息,而不会让接收者知道它被修改(这在现实世界中造成了各种令人讨厌的问题)。 MAC通常与加密消息一起发送。收件人所做的是首先计算加密邮件的MAC,然后检查它是否与使用加密邮件发送的MAC匹配。如果匹配则接收方知道该消息未被篡改。
一旦通过CBC-MAC完成加密,我们如何解密它们?三重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以获得原始消息。希望有所帮助,相当多的信息,随时可以要求任何澄清。 :)
答案 1 :(得分:2)
您无法“解密”CBC-MAC标记。消息验证代码(MAC)是密钥完整性检查。这意味着无论您输入的数据长度如何,从MAC算法创建的标记始终具有相同的长度。对于具有Triple-DES的CBC-MAC,其大小为3DES块的大小,即64 -bit(或更短的一部分)。
如果您的数据比这长,那么您无法“解密”它,因为现在有多种解决方案。但是,您可以使用相同的密钥通过CBC-MAC再次运行原始数据,然后重新创建标记。然后检查两个标签以查看它们是否匹配。如果他们这样做,那么您就知道您的数据没有被篡改。 (但可能不是,因为如果不使用3个不同的密钥,3DES就不那么好了,如果接受任意消息,CBC-MAC就不再被认为是安全的了。)