用Java加密和解密密码

Raj*_*aje 35 java encryption

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

Adr*_*min 21

这是我用来加密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;


   }
}
Run Code Online (Sandbox Code Playgroud)

你不能解密MD5,但你可以比较输出,因为如果你在这个方法中放入相同的字符串它将具有相同的加密输出.如果你想解密你需要使用SHA.你永远不会使用decription用户密码.为此,总是使用MD5.That异常是多余的.它永远不会抛出它.

  • md5 不安全(容易解密),绝不能用于密码。 (2认同)

zw3*_*324 10

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


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

MessageDigest.getInstance("MD5");

此处还列出其他算法.

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

  • md5只是单向哈希.你无法解密. (47认同)
  • 我知道这是一个老问题,但请*永远*使用md5"加密"密码.md5不安全,很容易解密. (8认同)
  • +1.@ avs31586,你真的不需要解密密码.相反,您使用MD5进行加密,然后在检查时始终检查两个MD5.有点让你解决人们猜测你的加密算法的问题 (5认同)

Gus*_*ind 9

Jasypt可以为你做到.简单易行