Java实现MD5消息摘要算法
发布时间 - 2026-01-11 00:51:36 点击率:次首先,必须要强调的一点,MD5不是加密算法,而是消息摘要算法,具有不可逆性。字符串通过MD5处理后会生成128位的二进制串。我们通常会将其转化为16进制串,用于登录密码验证。

加密算法与消息摘要算法区别:
- 加密算法具有相应地解密算法,通过加密算法对信息进行加密后,采用解密算法能够获取到原始数据。
- 采用摘要算法得到的数据是不完整的,无法反向获取到原始数据。
下面直接贴代码:
import java.security.MessageDigest;//Java类库已经支持MD5消息摘要
public class MD5{
private MD5(){
System.out.println("采用MD5消息摘要算法");
}
public static String getMD5Code(String message){
String md5Str = null;
try{
MessageDigest md = MessageDigest.getInstance("MD5");
//message.getBytes()方法是得到一个操作系统默认的编码格式的字节数组。不同的操作系统以及不同的编码格式会返回不同长度的byte型数组。
//md.digest()方法获得密文完成哈希计算,产生128位的二进制串,并且8位一组分成16个byte类型的数值。
byte[] md5Bytes = md.digest(message.getBytes());
//将16个数值都转换成两位16进制的数(161->A1,1->01),因此消息摘要完成后,md5Str是长度为32位的字符串
md5Str = BytesToHex(md5Bytes);
}catch(Exception e){
e.printStackTrace();
}
return md5Str;
}
public static String BytesToHex(byte[] bytes){
StringBuffer s = new StringBuffer();
for(int i=0;i<bytes.length;i++){
//如果数值小于16且大于0,如3,将其转换为03
if(bytes[i]>=0 && bytes[i] <= 15)
s.append("0");
//bytes[i] & 0xFF保证了如果bytes[I]是负数,那么结果仍为两位16进制数;
//toHexString()用于将参数以16进制的字符串形式返回,例如toHexString(241)返回值是字符串f1
s.append(Integer.toHexString(bytes[i] & 0xFF);
}
return s.toString();
}
public static void main(String args[]){
System.out.println(getMD5Code("shanghai"));
System.out.println(getMD5Code("beijing"));
System.out.println(getMD5Code("shanghai"));
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
网站制作免费,什么网站能看正片电影?
Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层
Laravel Fortify是什么,和Jetstream有什么关系
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
详解jQuery停止动画——stop()方法的使用
Laravel定时任务怎么设置_Laravel Crontab调度器配置
如何登录建站主机?访问步骤全解析
南京网站制作费用,南京远驱官方网站?
EditPlus中的正则表达式 实战(2)
如何在宝塔面板创建新站点?
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
昵图网官方站入口 昵图网素材图库官网入口
网站制作报价单模板图片,小松挖机官方网站报价?
英语简历制作免费网站推荐,如何将简历翻译成英文?
如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】
香港服务器租用费用高吗?如何避免常见误区?
Laravel如何使用.env文件管理环境变量?(最佳实践)
Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理
Laravel怎么自定义错误页面_Laravel修改404和500页面模板
Android使用GridView实现日历的简单功能
Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作
Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧
Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用
ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】
Laravel路由怎么定义_Laravel核心路由系统完全入门指南
如何快速辨别茅台真假?关键步骤解析
如何快速建站并高效导出源代码?
如何快速上传自定义模板至建站之星?
什么是javascript作用域_全局和局部作用域有什么区别?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】
利用JavaScript实现拖拽改变元素大小
Android滚轮选择时间控件使用详解
香港服务器选型指南:免备案配置与高效建站方案解析
如何在宝塔面板中修改默认建站目录?
谷歌Google入口永久地址_Google搜索引擎官网首页永久入口
BootStrap整体框架之基础布局组件
Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】
如何在不使用负向后查找的情况下匹配特定条件前的换行符
Linux系统命令中tree命令详解
Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南
高端云建站费用究竟需要多少预算?
Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程
JS实现鼠标移上去显示图片或微信二维码
如何在 Pandas 中基于一列条件计算另一列的分组均值

