JavaでSHA256を計算する

提供: Java入門
移動: 案内検索
スポンサーリンク

JavaでSHA-256のハッシュ値を計算するには、 MessageDigestを利用します。

読み方

SHA-256
しゃ にごろ
MessageDigest
めっせーじ だいじぇすと

概要

MessageDigestが扱えるアルゴリズムは、以下の通りです。

  • MD2
  • MD5
  • SHA-1
  • SHA-256
  • SHA-384
  • SHA-512

ハッシュアルゴリズムの選択は、インスタンス作成時に文字列で指定します。

MessageDigest md = MessageDigest.getInstance("アルゴリズム名");

サンプルでは、SHA-256を指定しています。getInstance()の引数を変更することで、他のハッシュアルゴリズムのハッシュ値を求めることもできます。

ソースコード

以下のソースコードは、文字列 hoge の SHA-256の値を計算し、16進数に変換して、表示するプログラムです。

/*
 * SHA2.java
 * Copyright (C) 2015 kaoru <kaoru@localhost>
 */
import java.security.MessageDigest;
class SHA2 {
        public static void main(String[] args) {
                String text = "hoge";
                byte[] cipher_byte;
                try{
                        MessageDigest md = MessageDigest.getInstance("SHA-256");
                        md.update(text.getBytes());
                        cipher_byte = md.digest();
                        StringBuilder sb = new StringBuilder(2 * cipher_byte.length);
                        for(byte b: cipher_byte) {
                                sb.append(String.format("%02x", b&0xff) );
                        }
                        System.out.println( sb );
                } catch (Exception e) {
                        e.printStackTrace();
                }
        }
}

コンパイル

$ javac SHA2.java

実行例

sha256コマンドでhogeを計算した結果、SHA2.java と同じ結果が得られたことが確認できました。

$ java SHA2
ecb666d778725ec97307044d642bf4d160aabb76f56c0069c71ea25b1e926825
$ sha256 -s hoge
SHA256 ("hoge") = ecb666d778725ec97307044d642bf4d160aabb76f56c0069c71ea25b1e926825

関連項目




スポンサーリンク