用Java加密和解密密码[关闭]

IT小君   2021-12-03T13:54:35

我想用Java加密和解密密码并以加密的形式存储到数据库中。如果它是开源的,那就太好了。任何建议/指示?

评论(5)
IT小君

这是我使用 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。那个异常是非常多余的。它永远不会抛出它。

2021-12-03T13:54:35   回复
IT小君

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


MD5 一定对你来说足够好,我想?您可以使用MessageDigest实现它

MessageDigest.getInstance("MD5");

此处还列出其他算法

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

2021-12-03T13:54:35   回复
IT小君

Jasypt可以为你轻松简单的做到

2021-12-03T13:54:35   回复
IT小君

您可以使用java.security.MessageDigestwithSHA作为您的算法选择。

以供参考,

在此处尝试可用示例

2021-12-03T13:54:36   回复
IT小君

我最近为此使用了 Spring Security 3.0(与 Wicket 结合),并且对它非常满意。这是一个很好的详尽教程文档另请查看本教程,它很好地解释了 Spring Security 2 的散列/加盐/解码设置。

2021-12-03T13:54:36   回复