Подтвердить что ты не робот

Шифровать и расшифровывать пароль в Java

Я хочу зашифровать и дешифровать пароль в Java и хранить в базе данных в виде зашифрованного. Это будет здорово, если это с открытым исходным кодом. Любые предложения/указатели?

4b9b3361

Ответ 1

MD5 должен быть достаточно хорош для вас, я думаю? Вы можете достичь этого с помощью MessageDigest.

MessageDigest.getInstance("MD5");

Существуют и другие алгоритмы, перечисленные здесь.

И вот его сторонняя версия, если вы действительно хотите: Быстрый MD5

Ответ 2

Вот алгоритм, который я использую для шифрования с MD5.It возвращает ваш зашифрованный вывод.

   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. Вы никогда не будете использовать decription для user password. Для этого всегда используйте MD5.Это исключение довольно избыточно. Оно никогда не будет бросать его.

Ответ 3

Jasypt может сделать это для вас. Легко и просто

Ответ 5

Недавно я использовал Spring Security 3.0 для этого (в сочетании с Wicket btw), и я очень доволен им. Здесь хороший подробный учебник и документация. Также рассмотрите этот учебник, который дает хорошее объяснение настройки хеширования/соления/декодирования для Spring безопасности 2.