Javaでの暗号化。 Macクラス

こんにちは、Habr! Javaの暗号化の基礎を学びたい初心者向けの一連の記事のうち 、Jakob Jenkovによる4番目の記事「Java Mac」の翻訳を紹介します。







目次:



  1. Java暗号化
  2. Java暗号
  3. メッセージダイジェスト
  4. Mac
  5. 署名
  6. キーペア
  7. キージェネレーター
  8. KeyPairGenerator
  9. キーストア
  10. キーツール
  11. 証明書
  12. CertificateFactory
  13. 証明書パス


メッセージ認証コード(MAC)



Java Mac( javax.crypto.Mac )は、バイナリデータからメッセージ認証コード(MAC)を作成します。 MACは、秘密鍵で暗号化されたメッセージダイジェストです。 秘密鍵を使用した場合のみ、MACを認証できます。







インスタンス化



Macクラスを使用する前に、Macのインスタンスを作成する必要があります。 Macクラスのインスタンスは、 getInstance()メソッドを使用して作成されます。 Macインスタンスを作成する例を次に示します。







Mac mac = Mac.getInstance("HmacSHA256");
      
      





getInstance()に渡される文字列パラメーターには、使用されるアルゴリズムの名前が含まれます。 この場合、HmacSHA256アルゴリズムが使用されます。







初期化



インスタンスを作成したら、Macを初期化する必要があります。 Macインスタンスは、インスタンスが使用する秘密鍵をパラメーターとして渡すinit()メソッドを呼び出すことにより初期化されます。 Macインスタンスを初期化する例を次に示します。







 byte[] keyBytes = new byte[]{0,1,2,3,4,5,6,7,8 ,9,10,11,12,13,14,15}; String algorithm = "RawBytes"; SecretKeySpec key = new SecretKeySpec(keyBytes, algorithm); mac.init(key);
      
      





init()メソッドはKeyのインスタンスを受け入れます。 この例では、Keyインターフェースを実装するSecretKeySpecを使用します。







MAC計算



MACインスタンスを使用して(初期化後)、MACデータの計算を開始できます。 MAC値を計算するには、 update()またはdoFinal()メソッドを呼び出します。 MACを計算するためのデータブロックが1つしかない場合は、 doFinal()を直接呼び出すことができます。次に例を示します。







 byte[] data = "abcdefghijklmnopqrstuvxyz".getBytes("UTF-8"); byte[] macBytes = mac.doFinal(data);
      
      





MACを計算するための複数のデータブロックがある場合、たとえば、ブロックごとにファイルを読み取る場合、各ブロックに対してupdate()メソッドを呼び出し、最後のブロックでdoFinal()で終了する必要があります。 以下に例を示します。







 byte[] data = "abcdefghijklmnopqrstuvxyz".getBytes("UTF-8"); byte[] data2 = "0123456789".getBytes("UTF-8"); mac.update(data); mac.update(data2); byte[] macBytes = mac.doFinal();
      
      






All Articles