Java標準機能でデータをハッシュ値に変換する方法

Javaの標準機能でデータをハッシュ値を変換することが出来ます。

ハッシュ値はパスワードを暗号化するために使用されたり、データの一致を簡単に確認するためなどに使用されます。

ハッシュに変換するアルゴリズムは次のとおり様々あります。

  • MD2
  • MD5
  • SHA-1
  • SHA-224
  • SHA-256
  • SHA-384
  • SHA-512/224
  • SHA-512/256
  • SHA3-224
  • SHA3-256
  • SHA3-384
  • SHA3-512

ソースはこうです。「SHA3-512」でハッシュ化しています。

import java.math.BigInteger;
import java.security.NoSuchAlgorithmException;
import java.security.MessageDigest;

...
    // SHA3-512
    MessageDigest sha3_512 = null;
    try {
      sha3_512 = MessageDigest.getInstance("SHA3-512");
    } catch (NoSuchAlgorithmException e1) {
      e1.printStackTrace();
    }
    byte[] sha3_256_result = sha3_512.digest("テスト1".getBytes());
    System.out.println(String.format("%040x", new BigInteger(1, sha3_256_result)));

MessageDigestクラスでハッシュにしています。getInstanceメソッドでアルゴリズムを指定しています。指定できるアルゴリズムは MessageDigestアルゴリズム に記載があります。

参考

Oracle Java 11 – MessageDigest