如何解码我的md5加密以及如何正确调用该函数?

use*_*485 -2 java encryption android 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! }
}
Run Code Online (Sandbox Code Playgroud)

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

Doo*_*nob 8

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

    catch (Exception exc) { return ""; // Impossibru! }
    
    Run Code Online (Sandbox Code Playgroud)

    关闭括号已注释掉.