MD5加密技术

本文深入解析MD5加密技术,一种常见的哈希算法。探讨其不可逆性、固定输出长度及输入敏感特性,并提供详细的MD5加密实现步骤,包括字符串校验、字节数组转换、MessageDigest实例获取、加密执行及结果转换。

MD5加密技术
MD5是哈希算法中的一种,加密强度较为适中。哈希算法有下面几个特点:
①不可逆,即使在已知加密过程的前提下,无法从密文反推回明文。
②输出数据的长度固定。例如:MD5加密输出数据的长度固定就是32个字符。
③输入数据不变,输出数据不变;输入数据变,输出数据都会跟着变。

/**
 * 执行MD5加密的工具方法
 * @param soucre
 * @return
 */
public static String md5(String soucre) {    
	// 1.对字符串进行校验
	boolean checkResult = stringCheck(soucre);    
	// 2.如果字符串校验失败,则抛出一个异常
	if (!checkResult) {
		throw new RuntimeException(ACConst.MESSAGE_PWD_INVALID);
	}    
	// 3.将源字符串转换为字节数组
	byte[] inputBytes = soucre.getBytes();    
	// 4.获取MessageDigest实例
	String algorithm = "md5";    
	// 5.声明变量存储加密结果
	byte[] outputBytes = null;    
	try {    
		// 6.获取MessageDigest实例
		MessageDigest digest = MessageDigest.getInstance(algorithm);    
		// 7.执行加密
		outputBytes = digest.digest(inputBytes);
	} catch (NoSuchAlgorithmException e) {
		e.printStackTrace();
	}    
	// 8.把加密结果字节数组转换为字符串
	// ①声明StringBuilder
	StringBuilder builder = new StringBuilder();    
	// ②声明字符数组
	char[] characters = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E','F' };    
	// ③遍历outputBytes
	for (int i = 0; i < outputBytes.length; i++) {    
		byte b = outputBytes[i];    
		// ③取当前字节的低四位数值
		int lowValue = b & 15;    
		// ④取当前字节的高四位数值
		int highValue = (b >> 4) & 15;    
		// ⑤使用高四位和低四位的值从characters字符数组中取出对应的字符
		char lowChar = characters[lowValue];
		char highChar = characters[highValue];    
		// ⑥拼字符串
		builder.append(highChar).append(lowChar);    
	}    
	return builder.toString();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java程序员廖志伟

赏我包辣条呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值