最简单详细的java MD5加密算法

public class MD5Util {
	
	/**
	 * MD5加密算法
	 * @param str	需要转化为MD5码的字符串
	 * @return	返回一个32位16进制的字符串
	 */
	public static String toMd5(String str) {
		StringBuffer md5Code = new StringBuffer();
		try {
		//获取加密方式为md5的算法对象
			MessageDigest instance = MessageDigest.getInstance("MD5");
			byte[] digest = instance.digest(str.getBytes());
			for (byte b : digest) {
				String hexString = Integer.toHexString(b & 0xff);
				if (hexString.length() < 2) {
					hexString = "0" + hexString;
				}
				md5Code = md5Code.append(hexString);
			}
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
		return md5Code.toString();
		
	}
	/**
	 * 思路过程:
	 * 1、str.getBytes():将字符串转化为字节数组。字符串中每个字符转换为对应的ASCII值作为字节数组中的一个元素
	 * 2、将字节数组通过固定算法转换为16个元素的有符号哈希值字节数组
	 * 3、将哈希字节数组的每个元素通过0xff与运算转换为两位无符号16进制的字符串
	 * 4、将不足两位的无符号16进制的字符串前面加0
	 * 5、通过StringBuffer.append()函数将16个长度为2的无符号进制字符串合并为一个32位String类型的MD5码
	 */
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值