web-dev-qa-db-fra.com

Crypter et décrypter un mot de passe dans Java

Je veux chiffrer et déchiffrer un mot de passe dans Java et le stocker dans une base de données sous forme chiffrée. Ce sera formidable si le code est open source. Des suggestions/des pointeurs?

34
Raje

[~ # ~] éditer [~ # ~] : cette réponse est ancienne. L'utilisation de MD5 est maintenant déconseillée car elle peut facilement être endommagée.


MD5 doit être assez bon pour vous j'imagine? Vous pouvez y parvenir avec MessageDigest .

MessageDigest.getInstance("MD5");

Il y a aussi d'autres algorithmes listés ici .

Et voici une version tierce, si vous voulez vraiment: Fast MD5

9
zw324

Voici l'algorithme que j'utilise pour crypter avec MD5.Il retourne votre sortie cryptée.

   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;


   }
}

Vous ne pouvez pas déchiffrer MD5, mais vous pouvez comparer les sorties car si vous mettez la même chaîne dans cette méthode, elle aura la même sortie cryptée. Si vous voulez déchiffrer, vous devez utiliser le SHA. Vous n'utiliserez jamais decription pour le mot de passe de l'utilisateur. Pour cela, utilisez toujours MD5.That exception est plutôt redondante. Elle ne le lâchera jamais.

20
Adrian Stamin

Jasypt peut le faire pour vous facilement et simplement

9
GustyWind

Vous pouvez utiliser Java.security.MessageDigest avec SHA comme choix d'algorithme.

Pour référence,

Essayez l'exemple disponible ici

3
raksja

J'ai récemment utilisé Spring Security 3.0 pour cela (combiné à Wicket btw), et j'en suis assez content. Voici un bon tutoriel approfondi et documentation . Regardez également ce tutoriel qui donne une bonne explication de la configuration de hachage/salage/décodage pour Spring Security 2.

2
Adriaan Koster