仮想サーファーの波乗り

仮想化エンジニアの日常

プログラミング・ブロックチェーン・VR/AR・作業効率化・中国事情などに関してよく書きます。

Javaを使ってSHA-2ハッシュ値をローカルで簡単に取得する方法


こんにちは!
SHA-2ハッシュ値を簡単に求める方法ないかな?
と思った時に、オンライン上でハッシュ値を生成してくれるサイト使おうかと思ったけど、他人に知られたくないAPIキーをハッシュ化したい時とかだと、オンライン上の見知らぬ人のサイト使うのは不安だよなあと。DB保存されるように実装してる可能性もあるし。


そこで、ローカルで簡単にSHA-2ハッシュ値を求めてくれるコードを書きました。メモ。


SHA-2ハッシュ値を求めるコード


前提として、Macを使い、Javaの実行環境はPCに用意されているものとします。


terminalを開いて、任意のディレクトリで、以下のコマンドでSha2Generater.javaというファイルを作ります。
$ touch Sha2Generater.java


以下のコマンドでSha2Generater.javaを開きます。
$ open Sha2Generater.java


開いたファイルに、以下のコードを記述します。

import java.security.MessageDigest;
class Sha2Generater {
    public static void main(String[] args) {
        // 第一引数を取得
        String input = args[0];
        byte[] c_byte;
        try{
            System.out.println("「" + input + "」をSHA-256ハッシュ化して出力します。");
            MessageDigest md = MessageDigest.getInstance("SHA-256");
            md.update(input.getBytes());
            c_byte = md.digest();
            StringBuilder sb = new StringBuilder(2 * c_byte.length);
            for(byte b: c_byte) {
                sb.append(String.format("%02x", b&0xff) );
            }
            // SHA-2ハッシュ値をコンソールに出力
            System.out.println(sb);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}


コードを記述したらファイルを保存します。


以下のコマンドでSha2Generater.javaをコンパイルします。
$ javac Sha2Generater.java


これで実行準備は整いました。あとは、以下のコマンドでSHA-2ハッシュ化したい文字列を入力し、コンソール出力することができます。
$ java Sha2Generater {SHA-2ハッシュ出力したい文字列}
$ java Sha2Generater 仮想サーファー


f:id:virtual-surfer:20180127104530p:plain
↑こんな感じで出力されるはず。


以上!


では!