JavaによるSHAアルゴリズム実装
2009/05/12 13:32Update
SHAは、認証や電子署名などに利用されているMD5よりも攻撃に強いデータ暗号化アルゴリズム(ハッシュ関数)です。本文はSHAアルゴリズムのJava実装サンプルです。
SHAについて
SHA - Wikipedia
SHAアルゴリズムのJava実装サンプル
※以下コードを無保証で自由にご利用できます。
Javaコード
SHA.javaimport 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
java SHA
24c1f4b4103e7017eccfe8baf33202f27fa4c197
9b54233ba8a12b9e80cc5c25d756bc87f2ae0ca4
Sponsored Link
Comments
- Relative Articles
- Java開発及び実行環境の構築 | Linux篇 - (2008/08/31 20:34)
- Java開発及び実行環境の構築 | Windows篇 - (2008/08/31 21:18)
- 5分でJava Hello World! - (2008/08/31 22:13)
- Java言語の制御構文 - 条件分岐if/else/else if - (2008/10/01 21:30)
- Java言語の繰り返し制御構文 - for文 - (2008/10/03 18:22)
- Java言語の繰り返し制御構文 - do ... while文 - (2008/10/03 21:23)
- Java言語の繰り返し制御構文 - while文 - (2008/10/03 21:32)
- Java言語の基礎 - javacコマンドによるコンパイル - (2008/10/10 17:58)
- Java アクセス修飾子概要 - (2008/10/29 18:31)
- Javaアノテーション機能 概要 - (2009/02/12 13:06)