Update MD5.java

main
pveayojnc 4 months ago
parent 56e0f93811
commit 9bec458c97

@ -3,36 +3,63 @@ package com.zsz.util;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
/**
* MD5 MD5
* final 便
*/
public final class MD5 { public final class MD5 {
/**
* MD5
* @param strSrc
* @return RuntimeException
*/
public static String encrypt(String strSrc) { public static String encrypt(String strSrc) {
try { try {
// 定义十六进制字符数组,用于将字节转换为十六进制表示
char hexChars[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', char hexChars[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8',
'9', 'a', 'b', 'c', 'd', 'e', 'f' }; '9', 'a', 'b', 'c', 'd', 'e', 'f' };
// 将输入的字符串转换为字节数组
byte[] bytes = strSrc.getBytes(); byte[] bytes = strSrc.getBytes();
// 获取 MD5 算法的 MessageDigest 实例
MessageDigest md = MessageDigest.getInstance("MD5"); MessageDigest md = MessageDigest.getInstance("MD5");
// 使用输入的字节数组更新摘要
md.update(bytes); md.update(bytes);
// 完成哈希计算,得到加密后的字节数组
bytes = md.digest(); bytes = md.digest();
// 获取加密后字节数组的长度
int j = bytes.length; int j = bytes.length;
// 创建一个字符数组,长度为字节数组长度的两倍,用于存储十六进制表示
char[] chars = new char[j * 2]; char[] chars = new char[j * 2];
// 用于记录字符数组的索引
int k = 0; int k = 0;
// 遍历加密后的字节数组
for (int i = 0; i < bytes.length; i++) { for (int i = 0; i < bytes.length; i++) {
// 获取当前字节
byte b = bytes[i]; byte b = bytes[i];
// 将字节的高 4 位转换为十六进制字符并存储到字符数组中
chars[k++] = hexChars[b >>> 4 & 0xf]; chars[k++] = hexChars[b >>> 4 & 0xf];
// 将字节的低 4 位转换为十六进制字符并存储到字符数组中
chars[k++] = hexChars[b & 0xf]; chars[k++] = hexChars[b & 0xf];
} }
// 将字符数组转换为字符串并返回
return new String(chars); return new String(chars);
} catch (NoSuchAlgorithmException e) { } catch (NoSuchAlgorithmException e) {
// 打印异常堆栈信息
e.printStackTrace(); e.printStackTrace();
// 抛出运行时异常,提示 MD5 加密出错
throw new RuntimeException("MD5加密出错+" + e); throw new RuntimeException("MD5加密出错+" + e);
} }
} }
/**
* MD5
* @param args
*/
public static void main(String[] args) { public static void main(String[] args) {
// 对字符串 "123456" 进行加密
String encrypt = encrypt("123456"); String encrypt = encrypt("123456");
// 打印加密后的字符串
System.out.println(encrypt); System.out.println(encrypt);
} }
} }
Loading…
Cancel
Save