0

ユーザー登録で MD5 を使用してパスワードを暗号化し、ログイン時に同じパスワードを照合しようとしています.Mysql をデータベースとして使用しています.Mysql も、パスワードを MD5 (つまり MD5(パスワード)) に変換するオプションを提供しています。それを暗号化するためのより良い方法はどれか知りたい..それはJavaコードまたはmysqlクエリを使用しています..

前もって感謝します。

4

3 に答える 3

3

MD5 で暗号化するために使用するアルゴリズムは次のとおりです。暗号化された出力が返されます。

   public class CryptWithMD5 {
   private static MessageDigest md;

   public static String cryptWithMD5(String pass){
    try {
        md = MessageDigest.getInstance("MD5");
        byte[] passBytes = pass.getBytes();
        md.reset();
        byte[] digested = md.digest(passBytes);
        StringBuffer sb = new StringBuffer();
        for(int i=0;i<digested.length;i++){
            sb.append(Integer.toHexString(0xff & digested[i]));
        }
        return sb.toString();
    } catch (NoSuchAlgorithmException ex) {
        Logger.getLogger(CryptWithMD5.class.getName()).log(Level.SEVERE, null, ex);
    }
        return null;


   }
}

MD5 を復号化することはできませんが、このメソッドに同じ文字列を入力すると、同じ暗号化された出力が返されるため、出力を比較できます。復号化する場合は、SHA を使用する必要があります。そのためには常にMD5を使用します。その例外はかなり冗長です。決してスローしません。パスワードをデータベースに追加するときは、このメソッドが返すものを追加します。ログインするには、それらを比較します。

于 2013-01-07T18:35:42.613 に答える
3

論理的には、アプリケーションとデータベースは 2 つの別々の物理ボックスに存在できるため、アプリケーション レイヤーでパスワードを暗号化してからデータベースに移動すると、より安全なオプションになります。

アプリケーション設計の観点からは、暗号化を検討し、パスワードを非常に早い段階でハッシュして、レイヤーからレイヤーへとパスワードがプレーンな文字列として移動しないようにする必要があります。

オフトピック:

MD5 は衝突攻撃を受けやすいため、電子メールの追加や動的に生成された値のようなソルトの使用を検討して、 Rainbow Tableを防止します。

間違いなく最も安全なパスワード保存方式

于 2012-05-22T05:57:18.803 に答える