在 Java 中加密和解密密码 [已关闭]

2022-09-01 02:39:33

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


答案 1

这是我用来加密的算法,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。您永远不会对用户密码使用描述。为此,请始终使用MD5。这个例外是相当多余的。它永远不会扔掉它。


答案 2

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


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

MessageDigest.getInstance("MD5");

这里还列出了其他算法。

如果你真的想要的话,这里有一个第三方版本:Fast MD5


推荐