java MD5字符串加密

package String;

import java.security.MessageDigest;

/**
 * 
 * @author 李林君
 * @version 2013-6-15上午10:57:38
 */
public class StringDemo26 {

	private final static String[] hexArray = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
			"a", "b", "c", "d", "e", "f" };
	/**
	 * 根据指定的字符串,创建加密后的字符串
	 */
	public static String createEncryPassword(String string){
		return encrypByMD5(string);
	}
	public static boolean verificationPassword(String password,String string){
		if(password.equals(encrypByMD5(string))){
			return true;
		}else{
			return false;
		}
	}
	/**
	 * 对指定的字符串进行MD5加密
	 */
	private static String encrypByMD5(String originString){
		if(originString !=null){
			try {
				//创建具有MD5算法的信息摘要
				MessageDigest md=MessageDigest.getInstance("MD5");
				//使用指定的字节数组对摘要进行最后的更新,更新完成摘要计算
				byte[] results=md.digest(originString.getBytes());
				//将得到的字节数组变成字符串返回
				String resultString=byteArrayToHex(results);
				return resultString.toUpperCase();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return null;
	}
	
	/**
	 * 将字节数组转换成16进制,以字符串的形式返回
	 */

	private static String byteArrayToHex(byte[] b){
		StringBuffer resultsb=new StringBuffer();
		for (int i = 0; i < b.length; i++) {
			resultsb.append(byteToHex(b[i]));
		}
		return resultsb.toString();
	}
	
	/**
	 * 将一个字节转换成16进制,并以字符串的形式返回
	 */
	private static String byteToHex(byte b){
		int n=b;
		if(n<0)
			n=256+n;
		int d1=n/16;
		int d2=n%16;
		
		return hexArray[d1]+hexArray[d2];
	}
	
	
	public static void main(String[] args){
		String password=StringDemo26.createEncryPassword("haohaoxuexi1111");
		System.out.println("对password进行MD5加密后的字符串如下:"+password);
		String string="haohaoxuexi1111";
		System.out.println("i是正确的密码吗?"+StringDemo26.verificationPassword(password, string));
		string="ddfslfjds";
		System.out.println("ddfslfjds 是正确的密码吗?"+StringDemo26.verificationPassword(password, string)
				);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值