Newer
Older
piccolo2d.java / anchorgarden / src / main / java / mbs / security / Encrypter.java
@Motoki Miura Motoki Miura on 14 Apr 2022 2 KB edu.umd.cs.piccolo -> org.piccolo2d
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);
    }
}