2012-10-23 25 views
1

我创建MD5这样:如何验证MD5

public void encrypeUsername(String sessionid) 
    { 
     byte[] defaultBytes = sessionid.getBytes(); 
     try 
     { 
      MessageDigest algorithm = MessageDigest.getInstance("MD5"); 
      algorithm.reset(); 
      algorithm.update(defaultBytes); 
      byte messageDigest[] = algorithm.digest(); 

      StringBuffer hexString = new StringBuffer(); 
      for (int i = 0; i < messageDigest.length; i++) 
      { 
       hexString.append(Integer.toHexString(0xFF & messageDigest[i])); 
      } 
      System.out.println("sessionid " + sessionid + " md5 version is " + hexString.toString()); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 



    } 

输入123456,我们得到MD5:e1adc3949ba59abbe56e057f2f883e

我想创造另一种方法的结果进行验证。

例如,如果我给e1adc3949ba59abbe56e057f2f883e和“123456”的输入,那么我得到的结果是:true/false。

任何想法如何实现这一目标?

谢谢, 射线。

+0

呃......再次加密输入? – sje397

+0

我认为mybe有更快的算法,然后再次重新加密。谢谢。 – rayman

回答

3
String pass = "123456"; 
String secret = "e1adc3949ba59abbe56e057f2f883e"; 
if encrypeUsername(pass).equals(secret) System.out.printl("ok!") 

请记住,md5是单向的。很难再从密码中取回密码。

(*)对于弱密码来说并不难。

+0

这个工作吗?该方法被定义为'public void',因此它不会返回要比较的字符串的散列版本 – hnvasa