插入数据时密码使用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进制字符串。
	 * <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;
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值