当前位置: 首页 > news >正文

java写一个MD5加密工具

下面是一个简单的 Java MD5 加密工具的实现。这个工具可以用于对输入的字符串进行 MD5 加密,并返回加密后的结果。
MD5 加密工具类

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;public class MD5Util {/*** 使用 MD5 算法加密字符串** @param input 要加密的字符串* @return 加密后的 MD5 字符串(16 进制格式)*/public static String md5(String input) {try {// 创建 MD5 消息摘要实例MessageDigest md = MessageDigest.getInstance("MD5");// 计算消息摘要byte[] messageDigest = md.digest(input.getBytes());// 将 byte 转换为 16 进制字符串StringBuilder hexString = new StringBuilder();for (byte b : messageDigest) {String hex = Integer.toHexString(0xff & b);if (hex.length() == 1) {hexString.append('0'); // 如果是单个字符前加 0}hexString.append(hex);}return hexString.toString();} catch (NoSuchAlgorithmException e) {throw new RuntimeException("MD5 加密失败", e);}}public static void main(String[] args) {// 测试 MD5 加密String originalString = "Hello, World!";String md5Encrypted = MD5Util.md5(originalString);System.out.println("原始字符串: " + originalString);System.out.println("MD5 加密结果: " + md5Encrypted);}
}

代码说明
引入必要的包:

java.security.MessageDigest:用于生成消息摘要。
java.security.NoSuchAlgorithmException:处理不支持的加密算法异常。 md5 方法:

接收一个字符串作为输入。 创建 MessageDigest 实例并指定算法为 “MD5”。 使用 digest
方法计算消息摘要,并将其转换为字节数组。 将字节数组转换为 16 进制字符串,以便更易读。 main 方法:

用于测试 MD5 加密功能,输入一个字符串并输出其加密结果。 使用示例 你可以在 main 方法中修改 originalString
的值,来测试不同字符串的 MD5 加密结果。运行程序后,你将看到如下输出:

原始字符串: Hello, World!
MD5 加密结果: 65a105f0Badb9b1b9e30f2b1c3e7b15a

注意事项
MD5 不是加密算法,而是哈希算法,因此它是不可逆的。
MD5 不再被认为是安全的,尤其是对于密码等敏感数据。对于需要高安全性的场合,考虑使用更安全的哈希算法(如 SHA-256 或 SHA-512)

32为长度的

public static String encryptWithMD5(String input){MessageDigest md = null;try {md = MessageDigest.getInstance("MD5");} catch (NoSuchAlgorithmException e) {log.error("MD5加密失败",e);}byte[] messageDigest = md.digest(input.getBytes());BigInteger no = new BigInteger(1, messageDigest);StringBuilder hashtext = new StringBuilder(no.toString(16));// 添加前导0,确保32位长度while (hashtext.length() < 32) {hashtext.insert(0, "0");}return hashtext.toString();}

http://www.mrgr.cn/news/55273.html

相关文章:

  • 3.matplotlib基础及用法(全)
  • 12 django管理系统 - 注册与登录 - 登录
  • 使用 Docker-compose 部署达梦 DM 数据库
  • 若依前后端分离版,部署到服务器CentOS7.5
  • 【Linux系统编程】冯诺依曼体系结构与操作系统
  • 51系列--人体身高体重BMI指数检测健康秤
  • Delphi下多线程控件BMDThread使用详解
  • nginx精讲
  • vue3 非父子组件间传值代码
  • Sigrity-Power SI如何使用Model Extraction模式同时提取电源和信号网络的S参数操作指导
  • vbs给qq发送消息
  • 2024人工智能报告.zip |一文迅速了解今年的AI界都发生了什么?
  • 基于SSM的校园跑腿网站的设计与实现
  • 银行报表测试
  • 简单走近ChatGPT
  • 科隆仪表IFC300W资料下载
  • 【QT速成】半小时入门QT6之QT前置知识扫盲(超详细QT工程解析)
  • MongoDB Shell 基本命令(二)操作符
  • Sigrity-Power SI如何使用Model Extraction模式提取电源网络的S参数和阻抗操作指导(一)
  • 探索CompletableFuture:高效异步编程的利器
  • C-自定义类型-联合和枚举
  • 数据库系统
  • 插件开发流程
  • HTTP Cookie深入解析
  • 从壹开始解读Yolov11【源码研读系列】——cfg:模型配置加载功能
  • DevExpress WPF中文教程:Data Grid的视图概述及主要功能一览