用Java加密和解密密码

时间:2011-07-06 05:39:49

标签: java encryption

我希望用Java加密和解密密码,并以加密的形式存储到数据库中。 如果它是开源的话会很棒。有什么建议/指示吗?

5 个答案:

答案 0 :(得分:20)

这是我用来加密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。你永远不会使用decription用户密码。因为它始终使用MD5。这个异常非常冗余。它永远不会抛出它。

答案 1 :(得分:9)

编辑:这个答案很老。现在不鼓励使用MD5 ,因为它很容易被破坏。


我想,MD5必须足够好吗?您可以使用MessageDigest来实现它。

MessageDigest.getInstance("MD5");

还列出了其他算法here

这是第三方版本,如果你真的想要: Fast MD5

答案 2 :(得分:9)

Jasypt 可以为您轻松简单地完成

答案 3 :(得分:3)

您可以将java.security.MessageDigestSHA一起用作算法选择。

供参考,

Try available example here

答案 4 :(得分:2)

我最近使用了Spring Security 3.0(结合Wicket btw),我很高兴。这是一个很好的thorough tutorialdocumentation。另请参阅this tutorial,它可以很好地解释Spring Security 2的哈希/ salting /解码设置。