免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
论坛 程序设计 Java MD5加密
最近访问板块 发新帖
查看: 1232 | 回复: 0
打印 上一主题 下一主题

MD5加密 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-05-29 13:56 |只看该作者 |倒序浏览
  1. import java.security.MessageDigest;

  2. public class Password {  
  3. private final static String[] hexDigits = { "0", "1", "2", "3", "4", "5",  
  4.   "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };  
  5.    
  6. // 十六进制下数字到字符的映射数组  
  7.    
  8. /** 把inputString加密 */
  9. public static String createPassword(String inputString) {  
  10. return encodeByMD5(inputString);  
  11. }  
  12.    
  13. /**
  14. * 验证输入的密码是否正确
  15. *  
  16. * @param password
  17. *            真正的密码(加密后的真密码)
  18. * @param inputString
  19. *            输入的字符串
  20. * @return 验证结果,boolean类型
  21. */
  22. public static boolean authenticatePassword(String password,  
  23.   String inputString) {  
  24. if (password.equals(encodeByMD5(inputString))) {  
  25.   return true;  
  26. } else {  
  27.   return false;  
  28. }  
  29. }  
  30.    
  31. /** 对字符串进行MD5编码 */
  32. private static String encodeByMD5(String originString) {  
  33. if (originString != null) {  
  34.   try {  
  35.    // 创建具有指定算法名称的信息摘要  
  36.    MessageDigest md = MessageDigest.getInstance("MD5");  
  37.    // 使用指定的字节数组对摘要进行最后更新,然后完成摘要计算  
  38.    byte[] results = md.digest(originString.getBytes());  
  39.    // 将得到的字节数组变成字符串返回  
  40.    String resultString = byteArrayToHexString(results);  
  41.    return resultString.toUpperCase();  
  42.   } catch (Exception ex) {  
  43.    ex.printStackTrace();  
  44.   }  
  45. }  
  46. return null;  
  47. }  
  48.    
  49. /**
  50. * 轮换字节数组为十六进制字符串
  51. *  
  52. * @param b
  53. *            字节数组
  54. * @return 十六进制字符串
  55. */
  56. private static String byteArrayToHexString(byte[] b) {  
  57. StringBuffer resultSb = new StringBuffer();  
  58. for (int i = 0; i < b.length; i++) {  
  59.   resultSb.append(byteToHexString(b[i]));  
  60. }  
  61. return resultSb.toString();  
  62. }  
  63.    
  64. /**
  65. * 将一个字节转化成十六进制形式的字符串
  66. */
  67. private static String byteToHexString(byte b) {  
  68. int n = b;  
  69. if (n < 0)  
  70.   n = 256 + n;  
  71. int d1 = n / 16;  
  72. int d2 = n % 16;  
  73. return hexDigits[d1] + hexDigits[d2];  
  74. }  
  75.    
  76. public static void main(String[] args) {  
  77. String password = Password.createPassword("huangcheng");  
  78. System.out.println("对huangcheng用MD5摘要后的字符串:" + password);  
  79. String inputString = "huangchenghuangcheng";  
  80. System.out.println("huangchenghuangcheng与密码匹配?"
  81.    + Password.authenticatePassword(password, inputString));  
  82. inputString = "huangcheng";  
  83. System.out.println("huangcheng与密码匹配?"
  84.    + Password.authenticatePassword(password, inputString));  
  85. }  
  86.    
  87. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP