Java

Javaで暗号化(ハッシュ)

More than 3 years have passed since last update.

Javaで暗号化(ハッシュ値取得)しなきゃならなくなりまして、面倒だなぁと思いながらも調べてみたら簡単にできました。

忘れても大丈夫なように残しておきます。

パラメータalgorithmNameに標準名でアルゴリズムを指定すればそのアルゴリズムで暗号化してHex化した文字列を取得できます。

使えるアルゴリズムは標準名 > MessageDigestのところに書いてありまが、下記の通りです。


  • MD2

  • MD5

  • SHA-1

  • SHA-256

  • SHA-384

  • SHA-512


exsample.java

private String toEncryptedHashValue(String algorithmName, String value) {

MessageDigest md = null;
StringBuilder sb = null;
try {
md = MessageDigest.getInstance(algorithmName);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
md.update(value.getBytes());
sb = new StringBuilder();
for (byte b : md.digest()) {
String hex = String.format("%02x", b);
sb.append(hex);
}
return sb.toString();
}

16進文字列化の部分はHex.encodeHex@org.apache.commons.codec.binary.Hexを使えば自前で作る必要ないですが、諸事情でライブラリ追加ができないのでこうなりました。

バカほど呼び出される関数というわけでもないのでこれでよしとしておきます。