メッセージ認証は ID 認証において重要な役割を果たし、金融および商業システムで広く使用されている認証システムの重要な部分です。
メッセージ認証コード (メッセージ認証コード、または MAC) は、認証の基礎として一般に使用されます。
基本原理は、キー (秘密キー) を使用して小さなデータ ブロックを生成し、それを送信するメッセージに追加することです。このテクノロジは、両方の通信当事者が鍵 K を共有していることを前提としています。一方の通信当事者がデータ M を他方の通信当事者に送信したい場合、メッセージ M の MAC は特定のアルゴリズム = F (K, M) によって計算されます。ここで、F は参照です。を認証演算機能に送信し、メッセージデータ M と MAC を一緒に相手に送信します。相手がデータを受信すると、まず同じアルゴリズム F を使用して MAC を計算し、送信された MAC と比較します。それが同じであれば、データは正しいと見なされます。 認証機能は暗号アルゴリズムの一種と考えられがちですが、逆算に使用されず、ある程度の安全性が確保されている点が異なります。 通常、さまざまなアプリケーション システムは独自の特定の認証機能を使用し、これによりデータのセキュリティがある程度確保されます。
j2sdk1.4 以降、Java は javax.crypto.Mac クラスのメッセージ認証を提供します。
プレーンコピーをクリップボードプリントに表示しますか?
byte[] macData = "これは Mac テストです".getBytes() //HmacMD5 アルゴリズムを使用して Mac のインスタンスを取得します。
Mac mac = Mac.getInstance("HmacMD5"); // アルゴリズムの IV を初期化します。ファイルから読み取ることができます。
byte[] ivInitKey = { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07 };
IvParameterSpec spec = new IvParameterSpec(ivInitKey); // Mac 検証の秘密鍵バイト。ファイルから読み取ることもできます。
byte[] keyBytes = { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f }; //秘密バイトとを使用して秘密キー オブジェクトを生成します。 DESede アルゴリズム
SecretKey key = new SecretKeySpec(keyBytes, "DESede") // Mac の初期化 mac.init(key, spec);
byte[] macCode = mac.doFinal(macData);
byte[] macData = "これは Mac テストです".getBytes() //HmacMD5 アルゴリズムを使用して Mac のインスタンスを取得します。
Mac mac = Mac.getInstance("HmacMD5"); // アルゴリズムの IV を初期化します。ファイルから読み取ることができます。
byte[] ivInitKey = { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07 };
IvParameterSpec spec = new IvParameterSpec(ivInitKey); // Mac 検証の秘密鍵バイト。ファイルから読み取ることもできます。
byte[] keyBytes = { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f }; //秘密バイトとを使用して秘密キー オブジェクトを生成します。 DESede アルゴリズム
SecretKey key = new SecretKeySpec(keyBytes, "DESede") // Mac の初期化 mac.init(key, spec);
byte[] macCode = mac.doFinal(macData);
macCode は生成された Mac であり、同じキーで同じ Mac を生成できます。
通信当事者が同じキーを使用していることを保証する限り、メッセージ検証の目的を達成するために同じ Mac を確実に取得できます。
これはインターネットでよく使われるチェックサムと同じ原理だそうです。
-