如何解码 md5 加密以及如何正确调用函数



>我有两个问题 1 我有以下代码,我不知道如何从代码的另一部分使用它,即当用户注册以加密我的字符串密码时

public static final String md5(final String toEncrypt) { 
    try { 
        final MessageDigest digest = MessageDigest.getInstance("md5");               
        digest.update(toEncrypt.getBytes()); 
        final byte[] bytes = digest.digest();       
        final StringBuilder sb = new StringBuilder(); 
        for (int i = 0; i < bytes.length; i++) { 
            sb.append(String.format("%02X", bytes[i])); 
        } 
        return sb.toString().toLowerCase();
    } 
    catch (Exception exc) { return ""; // Impossibru! }
}

第二个问题是,当我从数据库中提取该字符串以匹配用户在编辑框中键入的内容时,我将如何解密该字符串。

  1. 您不应该"解密"MD5。散列函数的全部意义在于使取消散列变得非常困难。(当然,黑客有时会尝试并成功,但这是一个不同的话题。对用户的输入进行哈希处理,然后将其与数据库中经过哈希处理的密码进行比较。
  2. 要调用它,只需使用 String hashedPassword = md5("some person's password"); .就像普通方法一样。
  3. 您可能实际上应该执行一些异常处理,而不仅仅是忽略它们。至少记录它们,至少。或返回null,或使用throws子句。只是不要完全忽略它们。
  4. 我甚至不知道第3行发生了什么......你可能应该把这些单独的线分开。另外,你的缩进有点非常奇怪。你会花更多的时间阅读你的代码而不是写它,所以现在让它可读,你以后会感谢过去的自己。事实上,我已经看到了一个错误:

    catch (Exception exc) { return ""; // Impossibru! }
    

    右括号被注释掉。

md5 是一种单向加密方法。找到加密版本的唯一方法是md5哈希字符组合,直到结果匹配

最新更新