项目实践——MD5加密
来源:互联网 发布:知乎 财务进销存一体 编辑:程序博客网 时间:2024/05/18 00:41
在项目中,需要用MD5进行加密,这里分享一个MD5加密类。
MD5加密类:
public class Md5 {private static String DEFAULT_JCE = "com.sun.crypto.provider.SunJCE"; private static String IBM_JCE = "com.ibm.crypto.provider.IBMJCE"; protected static final Log log = LogFactory.getLog(Md5.class); /** * 初始化系统加密算法提供者 */ static { try { Security.addProvider((Provider)Class.forName(DEFAULT_JCE).newInstance()); } catch (Exception e) { log.info(e); try { Security.addProvider((Provider)Class.forName(IBM_JCE).newInstance()); } catch (Exception ex) { log.info(ex); } } } /** * get hex string * * @param x * @return */ private static String hexDigit(byte x) { StringBuffer sb = new StringBuffer(); char c; // First nibble c = (char) ((x >> 4) & 0xf); if (c > 9) { c = (char) ((c - 10) + 'a'); } else { c = (char) (c + '0'); } sb.append(c); // Second nibble c = (char) (x & 0xf); if (c > 9) { c = (char) ((c - 10) + 'a'); } else { c = (char) (c + '0'); } sb.append(c); return sb.toString(); } /** * 加密 * * @param content * 加密内容 * @return 加密串 */ public static String encrypt(String content) { try { MessageDigest algorithm = null; algorithm = MessageDigest.getInstance("MD5"); algorithm.reset(); if (content != null) { algorithm.reset(); algorithm.update(content.getBytes()); byte digest[] = algorithm.digest(); StringBuffer hexString = new StringBuffer(); int digestLength = digest.length; for (int i = 0; i < digestLength; i++) { hexString.append(hexDigit(digest[i])); } return hexString.toString(); } else { return ""; } } catch (NoSuchAlgorithmException ex) { //加密过程中出现异常,采用原始的的内容串 return content; } } }
运行测试:
@Test public void testMd5(){ System.err.println(this.encrypt("123456")); }
结果:
e10adc3949ba59abbe56e057f20f883e
用户登录:
@RequestMapping("/login.do")@ResponseBody@Overridepublic Object login(HttpServletRequest request, HttpServletResponse response) {Logger log = Logger.getLogger(getClass());String biskeep = "";Md5 md5=new Md5();try {String loginName = request.getParameter("loginName");String loginPassword = md5.encrypt(request.getParameter("loginPassword"));HttpSession session = request.getSession();if (loginName != null && !loginName.trim().equals("")&& loginPassword != null&& !loginPassword.trim().equals("")) {SysUser user = userService.queryUser(loginName, loginPassword);biskeep = user.getBiskeep();// 查询该用户的部门信息String deptIdStr = user.getDepartmentid();SysDept sysDept=deptService.queryEntityById(SysDept.class, deptIdStr);// SysDept sysDept=null;// 查询该用户的角色信息,应该是一个list集合String roleIdStr = roleService.getRoleIdStr(user.getId());session.setAttribute(ConstValues.LOGIN_DEPT_ID, deptIdStr);session.setAttribute(ConstValues.LOGIN_ROLE_ID, roleIdStr);session.setAttribute(ConstValues.LOGIN_DEPT_TYPE, sysDept.getCdeptno());session.setAttribute("depId", deptIdStr);// 将用户信息放入到session中去session.setAttribute(ConstValues.LOGIN_USER_NAME,user.getCloginname());session.setAttribute(ConstValues.LOGIN_USER_ID, user.getId());session.setAttribute(ConstValues.LOGIN_FIRSTNAME,user.getFirstname());session.setAttribute(ConstValues.LOGIN_LASTNAME,user.getLastname());session.setAttribute(ConstValues.LOGIN_USER_PASSWORD, user.getCpassword());String ip = request.getHeader("x-forwarded-for");if (ip == null || ip.length() == 0|| "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("Proxy-Client-IP");}if (ip == null || ip.length() == 0|| "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("WL-Proxy-Client-IP");}if (ip == null || ip.length() == 0|| "unknown".equalsIgnoreCase(ip)) {ip = request.getRemoteAddr();}log.info("本机ip:" + ip);session.setAttribute(ConstValues.LOGIN_IP, ip);Map<String, String> param = new HashMap<String, String>();param.put("ip", ip);}JSONObject obj = createSuccessMessage(null);obj.put("biskeep", biskeep);String depId = (String) session.getAttribute(ConstValues.LOGIN_DEPT_ID);String ss = (String) session.getAttribute(ConstValues.LOGIN_USER_ID);return obj.toString();} catch (Exception e) {e.printStackTrace();return createErrorMessage(e.getMessage()).toString();}}
思路很简单,数据库存的密码是经过MD5加密过的,将用户登录的密码亦经过MD5加密,匹配成功即可登录
0 0
- 项目实践——MD5加密
- Java Web实践专题——MD5加密
- IOS——MD5加密
- java——MD5加密
- 第八周上机实践—项目4—字符串加密
- 第八周实践项目4—字符串加密
- iOS开发实践之MD5加密
- Android——MD5加密,获取MD5码
- JAVA数据加密——MD5加密,SHA加密,BASE64解密,BASE64加密,HMAC加密
- java加密解密——MD5算法
- 加密散列算法——MD5
- java加密解密——MD5算法
- JavaWeb加密解密——md5
- iOS MD5加密 —— HERO博客
- javascript——MD5加密脚本
- android工具2——MD5加密
- MD5加密——3行代码
- 加密系列——MD5加密算法
- miniGUI窗口管理及控件类
- hive udf
- vi笔记
- java.util.vector中的vector的详细用法
- 【codechef】 Zeroes(大数灵活题)
- 项目实践——MD5加密
- Keil常见错误警告
- ibatis 插入数据获得主键值
- git diff指令
- 嵌入式软件开发培训笔记——java第四天(高级类特性——接口/多态/抽象类/内部类以及异常处理)
- TCP、UDP、IP 协议分析
- JS语句
- 卷积
- JavaScript学习6:浏览器检测