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

时间:2013-10-08 21:01:46

标签: java android encryption 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! }
}

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

2 个答案:

答案 0 :(得分:8)

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

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

    关闭括号已注释掉。

答案 1 :(得分:1)

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