前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MD5加密代码(工具类)

MD5加密代码(工具类)

作者头像
用户1220053
发布2018-02-09 12:00:50
1.1K0
发布2018-02-09 12:00:50
举报
package com.test.system.util;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.Arrays;

/**
 * 该类将通过MD5对用户所输入的密码进行加密
 * 
 * @author gulf
 * @version 1.0
 */
public class MD5Encrypt {
	/**
	 * 该方法实现MD5加密
	 * @param password
	 * @return
	 * @throws NoSuchAlgorithmException
	 */
	public static byte[] encryptByMD5(String password) throws NoSuchAlgorithmException {
		SecureRandom random = new SecureRandom();
		byte[] salt = new byte[12];
		byte[] encryptPassword = null;
		//生成12位的随机值
		random.nextBytes(salt);
		MessageDigest messageDigest = MessageDigest.getInstance("MD5");
		messageDigest.update(salt);
		messageDigest.update(password.getBytes());
		byte[] digest = messageDigest.digest();
		encryptPassword = new byte[digest.length + 12];
		System.arraycopy(salt, 0, encryptPassword, 0, 12);
		System.arraycopy(digest, 0, encryptPassword, 12, digest.length);
		return encryptPassword;
	}

	/**
	 * 该方法完成登录时密码的验证
	 * @param password
	 * @param encryptPassword
	 * @return
	 * @throws NoSuchAlgorithmException
	 */
	public static boolean validatePassword(String password, byte[] encryptPassword)
			throws NoSuchAlgorithmException {
		byte[] salt = new byte[12];
	 		System.arraycopy(encryptPassword, 0, salt, 0, 12);
		MessageDigest messageDigest = MessageDigest.getInstance("MD5");
		messageDigest.update(salt);
		messageDigest.update(password.getBytes());
		byte[] digest = messageDigest.digest();
		byte[] digestInDB = new byte[encryptPassword.length - 12];
		System.arraycopy(encryptPassword, 12, digestInDB, 0,
				encryptPassword.length - 12);
		if (Arrays.equals(digest, digestInDB)) {
			return true;
		} else {
			return false;
		}
	}
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档