java.security.*包下MessageDigest类的简单应用 MD5加密

先通过MD5加密之后,再来一次可逆的加密。 
*顺序可以调整,可以选择先用可逆加密,然后再用MD5加密 
*/ 
public class MD5andKL{ 
//MD5加密。32位 
public static String MD5(String inStr) { 
MessageDigest md5 = null; 
try { 
   md5 = MessageDigest.getInstance("MD5"); 
} catch (Exception e) { 
   System.out.println(e.toString()); 
   e.printStackTrace(); 
   return ""; 
}   
char[] charArray = inStr.toCharArray(); 
byte[] byteArray = new byte[charArray.length]; 

for (int i = 0; i < charArray.length; i++) 
   byteArray[i] = (byte) charArray[i]; 

byte[] md5Bytes = md5.digest(byteArray); 

StringBuffer hexValue = new StringBuffer();

for (int i = 0; i < md5Bytes.length; i++) { 
   int val = ((int) md5Bytes[i]) & 0xff; 
   if (val < 16) 
    hexValue.append("0"); 
   hexValue.append(Integer.toHexString(val)); 
}

return hexValue.toString(); 
}

//可逆的加密算法 
public static String KL(String inStr){ 
//String s = new String(inStr); 
char[] a = inStr.toCharArray(); 
for (int i = 0;i <a.length;i++) { 
   a[i] = (char)(a[i]^'t'); 
} 
String s=new String(a); 
return s; 
} 
//加密后解密 
public static String JM(String inStr){ 
char[] a=inStr.toCharArray(); 
for (int i = 0;i <a.length;i++) { 
   a[i]= (char)(a[i]^'t'); 
} 
String k=new String(a); 
return k; 
} 
//测试主函数 
public static void main (String args[]){ 
String s = new String("admin"); 
System.out.println("原始:"+s); 
System.out.println("MD5后:"+MD5(s)); 
System.out.println("MD5后再加密:"+KL(MD5(s))); 
System.out.println("解密为MD5后的:"+JM(KL(MD5(s)))); 
} 


你可能感兴趣的:(MessageDigest)