package Java;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5 {
/**
* 使用MD5算法加密字符串并返回加密后的16进制字符串。
*
* @param dataStr 待加密的字符串
* @return 加密后的16进制字符串,如果加密失败则返回null
*/
public static StringBuilder encrypt(String dataStr) {
try {
// 获取MD5摘要实例
MessageDigest md = MessageDigest.getInstance("MD5");
// 更新摘要数据为指定字节数组
md.update(dataStr.getBytes(StandardCharsets.UTF_8));
// 完成哈希计算,并返回字节数组
byte[] digest = md.digest();
// 初始化StringBuilder对象,用于拼接最终的16进制字符串
StringBuilder hexString = new StringBuilder();
// 遍历字节数组
for (byte b : digest) {
// 将每个字节转换为正数(如果为负数则转换为对应的正数)
int positiveByte = b & 0xFF;
// 将正数转换为16进制字符串并添加到StringBuilder中
// 使用substring(6)去掉前导零,确保每个字节都是两位16进制数
hexString.append(Integer.toHexString(positiveByte).substring(6).toUpperCase());
}
// 返回拼接好的16进制字符串
return hexString;
} catch (NoSuchAlgorithmException e) {
// 如果MD5算法不可用,则打印堆栈信息
System.out.println("error:" + e.getMessage());
}
// 如果发生异常,则返回null
return null;
}
}
Java将输入的字符串通过MD5算法加密
于 2024-04-01 12:17:38 首次发布