Java で、ハッシュ値 (ハッシュダイジェスト) を扱う

Java で、ハッシュ値(ハッシュダイジェスト)を扱うには、例えば以下のようにする。 使用するクラス
import java.security.MessageDigest;
import java.security.MessageDigest;

public class HashTest {

    public static final String HASH_ALGORITHM = "SHA1";
//  public static final String HASH_ALGORITHM = "MD5";

    public static final String password = "password";

    public static void main(String[] args){

        try {
            password =  this.getDigest(password);
        } catch(Exception e) {
e.printStackTrace();
        }
    }

    public String getDigest(String data) throws Exception {

        StringBuffer s = new StringBuffer();
        MessageDigest md = MessageDigest.getInstance(HASH_ALGORITHM);
        byte[] dat = data.getBytes();
        md.update(dat);

        byte[] digest = md.digest();
        for (int i = 0; i < digest.length; i++) {
            int d = digest[i];

            if (d < 0) {  // byte 128-255
                d += 256;
            }
            if (d < 16) { //0-15 16
                s.append("0");
            }
            s.append(Integer.toString(d, 16));
        }
        return s.toString();
    }
}
public static final String HASH_ALGORITHM = "SHA1";
//  public static final String HASH_ALGORITHM = "MD5";
...
MessageDigest md = MessageDigest.getInstance(HASH_ALGORITHM);
のように、MessageDigest オブジェクトのインスタンス取得のときにハッシュアルゴリズムを指定することができる。また、
byte[] digest = md.digest();
だけでは、byte[] しか返ってこないので、ダイジェスト値を文字列として扱いたい場合はこのJava のバイト列を文字列に変換する必要がある。
トラックバック URL: https://perltips.twinkle.cc/trackback/68
Posted on 2006-03-17 by yas |
Perl で、ハッシュ値 (ハッシュダイジェスト) を扱う:<br />コンテンツの内容が変更されたかどうかをチェックする方法
Trackback from Perl Tips: たとえば、あるウェブサイトのコンテンツ (ウェブページ) が変更されたかどうかを......
Posted by Perl Tips (未認証ユーザ) on 2006/01/24(火) 21:26
PHP で、sha1 のハッシュ値を求める方法
Trackback from Perl Tips: 以下のコードを参考のこと。sha1 なので 160ビットの固定長の値は仕様であ......
Posted by Perl Tips (未認証ユーザ) on 2006/09/22(金) 22:52
パスワードは生のままデータベースに保存してはいけない?
Trackback from Perl Tips: いわゆるログイン処理において、ユーザーがウェブページのフォームから入力してきた......
Posted by Perl Tips (未認証ユーザ) on 2006/09/22(金) 23:01