FC2ブログ
一陣の神風が舞う
東北弁炸裂するショボプログラマの日々(´・ω・`)
09 | 2018/10 | 11
S M T W T F S
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -

スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

JAVAのハッシュ関数を簡略化する

Javaのハッシュ値を求めるために、java.security.MessageDigestクラスを使ったりするが、 ぶっちゃけあんなん求めるのに例外処理だー、アルゴリズムは~だーなんて 面倒くさいのでラッピングしてみた。



packege 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();
    }
}


/** * 使い方 */ import mbs.security.Encrypter; public class Exsample{     public static void main(String[] args){                  String value= "password";         String hash= Encrypter.getHash(value, Encrypter.ALG_SHA1);                  System.out.println("出力結果:" + hash);     } }
出力結果:5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
    

    自分で計算しようとしたら段々こんがらがって来て挫折orz
    
    そのうち、Tiger/Tiger2とかに挑戦してみたいね(・x・;)

この記事に対するコメント

とても使いやすいクラスですね!
参考にさせていただきました。
【2011/05/11 19:15】 URL | ysk #- [ 編集]


この記事に対するコメントの投稿














管理者にだけ表示を許可する


この記事に対するトラックバック
トラックバックURL
→http://ciablo.blog70.fc2.com/tb.php/48-7b84c6a3
この記事にトラックバックする(FC2ブログユーザー)

プロフィール

Mahny

Author:Mahny
趣味PG派生の職業PG(+SE?)。頭のデキはきっと残念ω

最近の記事

最近のコメント

最近のトラックバック

月別アーカイブ

カテゴリー

ブロとも申請フォーム

この人とブロともになる

ブログ内検索

RSSフィード

リンク

このブログをリンクに追加する

ペット
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。