在 Java 中加密和解密密码 [已关闭]
2022-09-01 02:39:33
我想在Java中加密和解密密码,并以加密的形式存储到数据库中。如果它是开源的,那就太好了。任何建议/指针?
我想在Java中加密和解密密码,并以加密的形式存储到数据库中。如果它是开源的,那就太好了。任何建议/指针?
这是我用来加密的算法,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。这个例外是相当多余的。它永远不会扔掉它。
编辑:这个答案是旧的。现在不鼓励使用MD5,因为它很容易被破坏。
我想MD5对你来说一定足够好了吗?您可以使用MessageDigest来实现它。
MessageDigest.getInstance("MD5");
这里还列出了其他算法。
如果你真的想要的话,这里有一个第三方版本:Fast MD5