クレジット カードのトリプル DES 暗号化と復号化を理解しました。CBC-MACを復号化する方法を教えてください...最後のCBC-MACは4ビットMACを提供します。
これは、ウィキペディアで CBC モードがどのように機能するかのビジュアルです。

CBC-MAC が行うことは、出力された暗号文の最後のブロックを取得し、それを MAC と呼ぶだけです。したがって、MAC は、おそらく 4 ビットではないブロック暗号のサイズである必要があります。3DES を使用している場合は、64 ビットになります。
MAC から暗号化まで、正確にはどのように機能しますか? マックは何をしているの?
MAC と暗号化は、2 つのまったく別のものです。それぞれの概要を簡単に説明しようと思います。
- 暗号化は機密性を提供します。これは、(対称暗号の場合) 正しいキーを持つ人だけがメッセージの内容を読み取ることができることを意味します。
- MAC は完全性を提供します。つまり、送信者と受信者の間でメッセージが改ざんされていないことを意味します。
MAC が存在する理由は、暗号化されたメッセージを読み取ることができなくても、受信者が変更されたことを知らずに、暗号化されたメッセージを変更できる可能性があるためです (これは、現実の世界であらゆる種類の厄介な問題を引き起こしています)。MAC は通常、暗号化されたメッセージとともに送信されます。受信者が行うことは、最初に暗号化されたメッセージの MAC を計算し、次に暗号化されたメッセージで送信された MAC と一致するかどうかを確認することです。それらが一致する場合、受信者はメッセージが改ざんされていないことを認識します。
CBC-MAC による暗号化が行われると、どうすればそれらを復号化できますか? 私の場合、トリプル DES は機能しません。
暗号化に 3DES を使用している場合は、最初にメッセージを暗号化することをお勧めします (C としましょう)。CBC-MAC は十分なセキュリティを提供しないため、CBC-MAC 以外のものを使用することもお勧めします。HMACを使用して、暗号化されたメッセージの MAC (HMAC(C)) を計算することをお勧めします。つまり、3DES 用と HMAC 用の 2 つのキーが必要になります。HMAC はほとんどの言語で広くサポートされているため、実装を見つけることは問題になりません。
要約すると、メッセージ M を取得し、3DES(M) = C を計算し、次に HMAC(C) = T を計算し、このデータを受信している相手に (C, T) を送信します。受信者は HMAC(C) = T' を計算し、T' == T であることを確認し、一致する場合は 3DES(C) = M を計算して元のメッセージを取得します。かなりの情報が役立つことを願っています。明確にするために何でもお気軽にお尋ねください。:)