首页 > 开发 > Java > 正文

java实现MD5加密方法汇总

2024-07-13 09:55:59
字体:
来源:转载
供稿:网友

本文给大家汇总介绍了2种java实现MD5加密的方法,非常的实用,这里分享给大家,学习下其中的思路,对大家学习java非常有帮助。

代码一:

 

 
  1. /** 
  2. * 实现MD5加密 
  3. * 
  4. */ 
  5. public class MD5 { 
  6.  
  7. /** 
  8. * 获取加密后的字符串 
  9. * @param input 
  10. * @return 
  11. */ 
  12. public static String stringMD5(String pw) { 
  13. try {  
  14.  
  15. // 拿到一个MD5转换器(如果想要SHA1参数换成”SHA1”)  
  16. MessageDigest messageDigest =MessageDigest.getInstance("MD5");  
  17. // 输入的字符串转换成字节数组  
  18. byte[] inputByteArray = pw.getBytes();  
  19. // inputByteArray是输入字符串转换得到的字节数组  
  20. messageDigest.update(inputByteArray);  
  21. // 转换并返回结果,也是字节数组,包含16个元素  
  22. byte[] resultByteArray = messageDigest.digest();  
  23. // 字符数组转换成字符串返回  
  24. return byteArrayToHex(resultByteArray);  
  25. catch (NoSuchAlgorithmException e) {  
  26. return null;  
  27. }  
  28.  
  29. public static String byteArrayToHex(byte[] byteArray) {  
  30.  
  31. // 首先初始化一个字符数组,用来存放每个16进制字符  
  32. char[] hexDigits = {'0','1','2','3','4','5','6','7','8','9''A','B','C','D','E','F' };  
  33. // new一个字符数组,这个就是用来组成结果字符串的(解释一下:一个byte是八位二进制,也就是2位十六进制字符(2的8次方等于16的2次方))  
  34. char[] resultCharArray =new char[byteArray.length * 2];  
  35. // 遍历字节数组,通过位运算(位运算效率高),转换成字符放到字符数组中去  
  36. int index = 0;  
  37. for (byte b : byteArray) {  
  38. resultCharArray[index++] = hexDigits[b>>> 4 & 0xf];  
  39. resultCharArray[index++] = hexDigits[b& 0xf];  
  40. // 字符数组组合成字符串返回  
  41. return new String(resultCharArray);  

方法二:

 

 
  1. package other; 
  2.  
  3. import java.security.MessageDigest; 
  4. import java.security.NoSuchAlgorithmException; 
  5. /* 
  6. * MD5 算法 
  7. */ 
  8. public class MD5 { 
  9.  
  10. // 全局数组 
  11. private final static String[] strDigits = { "0""1""2""3""4""5"
  12. "6""7""8""9""a""b""c""d""e""f" }; 
  13.  
  14. public MD5() { 
  15.  
  16. // 返回形式为数字跟字符串 
  17. private static String byteToArrayString(byte bByte) { 
  18. int iRet = bByte; 
  19. // System.out.println("iRet="+iRet); 
  20. if (iRet < 0) { 
  21. iRet += 256; 
  22. int iD1 = iRet / 16; 
  23. int iD2 = iRet % 16; 
  24. return strDigits[iD1] + strDigits[iD2]; 
  25.  
  26. // 返回形式只为数字 
  27. private static String byteToNum(byte bByte) { 
  28. int iRet = bByte; 
  29. System.out.println("iRet1=" + iRet); 
  30. if (iRet < 0) { 
  31. iRet += 256; 
  32. return String.valueOf(iRet); 
  33.  
  34. // 转换字节数组为16进制字串 
  35. private static String byteToString(byte[] bByte) { 
  36. StringBuffer sBuffer = new StringBuffer(); 
  37. for (int i = 0; i < bByte.length; i++) { 
  38. sBuffer.append(byteToArrayString(bByte[i])); 
  39. return sBuffer.toString(); 
  40.  
  41. public static String GetMD5Code(String strObj) { 
  42. String resultString = null
  43. try { 
  44. resultString = new String(strObj); 
  45. MessageDigest md = MessageDigest.getInstance("MD5"); 
  46. // md.digest() 该函数返回值为存放哈希值结果的byte数组 
  47. resultString = byteToString(md.digest(strObj.getBytes())); 
  48. catch (NoSuchAlgorithmException ex) { 
  49. ex.printStackTrace(); 
  50. return resultString; 
  51.  
  52. public static void main(String[] args) { 
  53. MD5 getMD5 = new MD5(); 
  54. System.out.println(getMD5.GetMD5Code("000000")); 


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表