「Java」MessageDigest.getInstance関数でパスワード文字列のハッシュ値を16進数文字列で返すサンプル

説明
1.public static MessageDigest getInstance(String algorithm)throws NoSuchAlgorithmException
指定されたダイジェスト・アルゴリズムを実装するMessageDigestオブジェクトを返します。
2.public StringBuilder(int capacity)
文字を持たず、capacity引数によって指定された初期容量の文字列ビルダーを構築します。
3.public byte[] getBytes()
プラットフォームのデフォルトの文字セットを使用してこのStringをバイト・シーケンスにエンコード化し、結果を新規バイト配列に格納します。
Javaコード

package com.arkgame.study;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class PwdHashDemo {
      public static final String algorithm = "SHA-256";

      public static String getPasswordHash(String target) {
            if ((target == null) || (algorithm == null)) {
                  return null;
            }
            MessageDigest md = null;
            try {
                  // MessageDigestオブジェクト
                  md = MessageDigest.getInstance(algorithm);
            } catch (NoSuchAlgorithmException e) {
                  return null;
            }
            md.reset();
            // ダイジェスト更新
            md.update(target.getBytes());
            byte[] dgByte = md.digest();
            StringBuilder sb = new StringBuilder(2 * dgByte.length);
            for (byte bt : dgByte) {
                  // 文字列をこの文字シーケンスに追加
                  sb.append(String.format("%02x", bt & 0xff));
            }
            return sb.toString();

      }

      public static void main(String[] args) {

            String strPwdA = "12345Te";
            // 空白
            String strPwdB = "";
            // null
            String strPwdC = null;
            String pwdHashA = getPasswordHash(strPwdA);
            System.out.println("文字列Aのハッシュ値を16進数文字列に変換結果: " + pwdHashA);
            String pwdHashB = getPasswordHash(strPwdB);
            System.out.println("文字列Bのハッシュ値を16進数文字列に変換結果: " + pwdHashB);
            //
            String pwdHashC = getPasswordHash(strPwdC);
            System.out.println("文字列Cのハッシュ値を16進数文字列に変換結果: " + pwdHashC);
      }

}

結果
文字列Aのハッシュ値を16進数文字列に変換結果: de4eafc85623ee042700c9b782a35640f6f79eb3f7e763011dc12f3cdb84d621
文字列Bのハッシュ値を16進数文字列に変換結果: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
文字列Cのハッシュ値を16進数文字列に変換結果: null

Java

Posted by arkgame