package mbs.security; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /** * ハッシュ値生成機能を提供 * @auther Mahny */ public class Encrypter{ /** * メッセージダイジェスト:MD5 */ public static final String ALG_MD5= "MD5"; /** * メッセージダイジェスト:SHA-1 */ public static final String ALG_SHA1= "SHA-1"; /** * メッセージダイジェスト:SHA-256 */ public static final String ALG_SHA256= "SHA-256"; /** * メッセージダイジェスト:SHA-384 */ public static final String ALG_SHA384= "SHA-384"; /** * メッセージダイジェスト:SHA-512 */ public static final String ALG_SHA512= "SHA-512"; /** * ハッシュ値を返す * @param org 計算元文字列 * @param algorithm ハッシュアルゴリズム名(Encrypter.ALG_xxxで取得できる) * @return ハッシュ値 */ public static String getHash(String org, String algorithm){ // 引数・アルゴリズム指定が無い場合は計算しない if ((org== null)||(algorithm== null)){ return null; } // 初期化 MessageDigest md= null; try{ md= MessageDigest.getInstance(algorithm); } catch(NoSuchAlgorithmException e){ return null; } md.reset(); md.update(org.getBytes()); byte[] hash= md.digest(); // ハッシュを16進数文字列に変換 StringBuffer sb= new StringBuffer(); int cnt= hash.length; for(int i= 0; i< cnt; i++){ sb.append(Integer.toHexString( (hash[i]>> 4) & 0x0F ) ); sb.append(Integer.toHexString( hash[i] & 0x0F ) ); } return sb.toString(); } public static void main(String[] args){ String value= "aaa"; String hash= Encrypter.getHash(value, Encrypter.ALG_SHA1); System.out.println("出力結果:" + hash); } }