トップ 一覧 ping 検索 ヘルプ RSS ログイン

メッセージダイジェストの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!メッセージダイジェスト

[Java]{{category コード片}}

 /*
  * create : 2004/12/22
  * creator: yagi
  * version: 1.0
  * summary: 
  * 
  * history:
  *  1.0 新規作成
  */
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 
 public class Security {
     /**
      * MessageDigestインスタンス
      */
     private static MessageDigest md = null;
     
     /**
      * 暗号化に使用するアルゴリズム
      */
     public static final String DIGEST_ALGORITHM = "SHA";
     
     /**
      * パスワードをハッシュ関数(一方向要約関数)で、暗号化する
      * @param orginalPassword
      * @return
      * @throws NoSuchAlgorithmException
      */
     public static String getCryptPassWord(String orginalPassword) throws NoSuchAlgorithmException {
     
         byte[] digest = getDigest(orginalPassword.getBytes());
         
         StringBuffer sb = new StringBuffer();
         for(int i = 0; i < digest.length; i++) {
             sb.append(Integer.toHexString((digest[i] >> 4) & 0x0f)); 
             sb.append(Integer.toHexString( digest[i] & 0x0f));          
         }
         return new String(sb);
     }
 
     /**
      * 暗号化前のパスワードと暗号化後のパスワードを比較する
      * @param orgPass
      * @param cryptPass
      * @return
      * @throws NoSuchAlgorithmException
      */
     public static boolean checkPassword(String orgPass, String cryptPass) throws NoSuchAlgorithmException {
         return MessageDigest.isEqual(
             getCryptPassWord(orgPass).getBytes(),
             cryptPass.getBytes());
     }
 
     /**
      * 暗号化後のハッシュ値の桁数を取得する
      * @return
      * @throws NoSuchAlgorithmException
      */
     public static int getDigestLength() throws NoSuchAlgorithmException {
         return getMessageDigetst().getDigestLength();
     }
 
     /**
      * ダイジェストを取得する
      * @param val
      * @return
      * @throws NoSuchAlgorithmException
      */
     private static byte[] getDigest(byte[] val)
         throws NoSuchAlgorithmException {
         
         getMessageDigetst().update(val);
         byte[] digest = getMessageDigetst().digest();
         resetDigest();
         
         return digest;
     }
 
     /**
      * MessageDigestのインスタンスを取得
      * @return
      * @throws NoSuchAlgorithmException
      */
     private static MessageDigest getMessageDigetst() throws NoSuchAlgorithmException {
         if (md == null) {
             md = MessageDigest.getInstance(DIGEST_ALGORITHM);
         }
         return md;
     }
     
     /**
      * MessageDigestのインスタンスを初期化
      * @throws NoSuchAlgorithmException
      */
     private static void resetDigest() throws NoSuchAlgorithmException {
         getMessageDigetst().reset();
     }
 }