JavaによるSHAアルゴリズム実装

2009/05/12 13:32Update
TAGS: Java | SHA | 暗号化 | アルゴリズム | ハッシュ関数 | 電子署名 | 認証

SHAは、認証や電子署名などに利用されているMD5よりも攻撃に強いデータ暗号化アルゴリズム(ハッシュ関数)です。本文はSHAアルゴリズムのJava実装サンプルです。

SHAについて


SHA - Wikipedia

SHAアルゴリズムのJava実装サンプル


※以下コードを無保証で自由にご利用できます。

Javaコード
SHA.java
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class SHA {
    private static final String KEY_SHA = "SHA";
    /**
     * SHAアルゴリズムで暗号化
     * 
     * @param data value
     * @return 暗号化後の16進数
     * @throws NoSuchAlgorithmException 指定されるアルゴリズムが存在しない場合
     * 
     */
    public static String encrypt(byte[] value) throws NoSuchAlgorithmException  {

        MessageDigest sha = MessageDigest.getInstance(KEY_SHA);
        sha.update(value);

        return hashByte2String(sha.digest());
    }
    
    //16進数に変換
    private static String hashByte2String(byte []hash) {
        StringBuffer hexString = new StringBuffer();
        for (int i = 0; i < hash.length; i++) {
            if ((0xff & hash[i]) < 0x10) {// < 16(<=F)の場合、1桁になるので、頭に"0"を追加
                hexString.append("0" + Integer.toHexString((0xFF & hash[i])));    //HEX
            } else {
                hexString.append(Integer.toHexString(0xFF & hash[i]));    //HEX
            }
        }
        
        return hexString.toString();
    }
    
    public static void main(String []args) {
        try {
            System.out.println(encrypt("112233445566".getBytes()));
            System.out.println(encrypt("112233445566あいうえお".getBytes()));
        } catch (NoSuchAlgorithmException e) {
            // TODO 自動生成された catch ブロック
            e.printStackTrace();
        }
    }
}


実行:
javac SHA.java
java SHA
24c1f4b4103e7017eccfe8baf33202f27fa4c197
9b54233ba8a12b9e80cc5c25d756bc87f2ae0ca4

有关作者
Syboos.jp編集長システム設計や開発、保守運営などを行ってます。オープンソース技術に興味があります。

Sponsored Link


Comments

用户名 (required)

Email (will not be published) (required)

URL

Evaluation