插入数据时密码使用MD5加密算法加密
2015-07-31 16:32
531 查看
package com.cmcc.vrp.util; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.SignatureException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.util.DigestUtils; public class MD5 { /** * 16进制字符集,用于将MD5算法处理后二进制字节流转换为16进制字符串 */ public static final char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; private static final Log logger = LogFactory.getLog(MD5.class); /** * 签名字符串 * * @param text * 需要签名的字符串 * @param key * 密钥 * @param input_charset * 编码格式 * @return 签名结果 */ public static String sign(String text, String key, String input_charset) { text = text + key; return DigestUtils.md5DigestAsHex(getContentBytes(text, input_charset)); } /** * 签名字符串 * * @param text * 需要签名的字符串 * @param sign * 签名结果 * @param key * 密钥 * @param input_charset * 编码格式 * @return 签名结果 */ public static boolean verify(String text, String sign, String key, String input_charset) { text = text + key; String mysign = DigestUtils.md5DigestAsHex(getContentBytes(text, input_charset)); if (mysign.equals(sign)) { return true; } else { return false; } } /** * @param content * @param charset * @return * @throws SignatureException * @throws UnsupportedEncodingException */ private static byte[] getContentBytes(String content, String charset) { if (charset == null || "".equals(charset)) { return content.getBytes(); } try { return content.getBytes(charset); } catch (UnsupportedEncodingException e) { throw new RuntimeException("MD5签名过程中出现错误,指定的编码集不对,您目前指定的编码集是:" + charset); } } /** * 将指定的字符串使用md5算法处理后返回16进制字符串。 * <p> * * @param text * @return */ public static String md5(String text) { byte[] bytes = text.getBytes(); return md5(bytes); } /** * 将指定的字符串使用md5算法处理后返回16进制字符串。 * <p> * * @param bytes * @return */ public static String md5(byte[] bytes) { try { // 获得MD5摘要算法的 MessageDigest 对象 MessageDigest md = MessageDigest.getInstance("MD5"); // 使用指定的字节更新摘要 md.update(bytes); // 获得密文 byte[] encrypted = md.digest(); return toHex(encrypted); } catch (Exception e) { logger.equals(e); return null; } } /** * 获取md5算法实例 * <p> * * @return */ public static MessageDigest getMD5Instance() { try { return MessageDigest.getInstance("MD5"); } catch (Exception e) { logger.equals(e); return null; } } /** * 将字节数组转化为16进制字符串 * <p> * * @param bytes * @return */ public static String toHex(byte[] bytes) { if (bytes == null) { return null; } // 把密文转换成十六进制的字符串形式 int j = bytes.length; char str[] = new char[j * 2]; int k = 0; for (int i = 0; i < j; i++) { byte byte0 = bytes[i]; str[k++] = hexDigits[byte0 >>> 4 & 0xf]; str[k++] = hexDigits[byte0 & 0xf]; } return new String(str); } }
private boolean insertSelective(Administer administer) { if (administer == null) { return false; } String szPassword = administer.getPassword(); if (szPassword == null) {// 密码经过Md5加密后存入数据库 return false; } szPassword = MD5.sign(szPassword, "", "utf-8"); administer.setPassword(szPassword); administer.setCreateTime(new Date()); administer.setUpdateTime(new Date()); administer.setDeleteFlag(Constants.DELETE_FLAG.UNDELETED.getValue()); return administerMapper.insertSelective(administer) > 0; }
相关文章推荐
- Anddroid之Menu用法
- jQuery 插件集锦——《导航篇》
- PCIe SSD Wear-Leveling磨损均衡
- 20150725 前端开发工具DreamWeaver及Sublime方法技巧总结
- Rice-IIIP (1)
- jmp指令对应的机器码
- MFC&ATL&STL比较
- HDOJ1025(最长上升子序列)
- 暑假集训第三周第二阶段 搜索 D - 变形课
- 碉堡了!麻省理工学院开发出自动修复 Bug 的系统
- 如何使用php实现评委评分器
- 分享一个最近很火的响应式后台模板
- 【第二弹】【POJ1276】【Cash Machine】
- Java多线程总结
- UITableView - 2
- WPF BitMapImage 占用删除问题,更换头像问题
- Centos添加新硬盘、分区、格式化、自动挂载
- android rectF
- memcache的启动
- echarts中的柱状图使用