插入数据时密码使用MD5加密算法加密

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进制字符串。
	 * 

* * @param text * @return */ public static String md5(String text) { byte[] bytes = text.getBytes(); return md5(bytes); } /** * 将指定的字符串使用md5算法处理后返回16进制字符串。 *

* * @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算法实例 *

* * @return */ public static MessageDigest getMD5Instance() { try { return MessageDigest.getInstance("MD5"); } catch (Exception e) { logger.equals(e); return null; } } /** * 将字节数组转化为16进制字符串 *

* * @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;
	}


你可能感兴趣的:(Web)