Java Web实践专题——MD5加密

MD5是Message Digest 5的缩写,是一种加密算法,能够对字节数组进行加密,有如下特点:
l 不能根据加密后的信息找加密之前的信息;
l 加密后的结果是128位;
l 对于给定的字节数组,不管什么时候采用这种加密算法,结果是相同的;
l 对于不同的字节数组,加密的结果是不相同的。
在Web应用中通常需要对用户设置的密码进行加密之后再存储,否则数据库管理员能够看到明文的密码,并且密码也有被黑客获取的危险。
可以使用MD5对用户的密码进行加密。但是有两种情况,你可能需要使用其他的方法处理:
l 需要保证密码在传输过程中也是安全的,这时候通常都使用https,几乎所有的银行网站都是这样,相对来说成本比较高。
l 如果网站提供了取回密码的功能。因为使用MD5加密之后原来的密码是没有办法获取的。
MD5的应用包括如下几个过程:
l 把要加密的信息转换成字节数组;
l 获取MessageDigest对象,该对象完成加密;
l 使用转换后的字节数组初始化MessgeDigest对象;
l 调用digest方法进行加密,返回byte数组;
l 把byte数组转换成字符串,然后就可以使用加密后的字符串了。
假设原来的字符串为oldStr,内容为“lixucheng”,加密后的字符串为newStr。具体过程分别介绍如下。
1、把字符串转换成字节数组
可以使用字符串的getBytes方法进行转换,例如:
byte[] oldBytes = oldStr.getBytes();
数组中的数据:108 105 120 117 99 104 101 110 103
2、获取MessgaeDigest对象
使用MessageDigest的getInstance(String str)方法得到MessgeDigest对象,参数使用MD5。例如:
MessageDigest md = MessageDigest.getInstance("MD5");
3、使用转换后的字节数组初始化MessgeDigest对象
使用update方法进行初始化,参数为转换后的字节数组。例如:
md.update(oldBytes);
4、调用digest方法进行加密
方法返回的是字节数组。例如:
byte[] newBytes = md.digest();
数组中的数据(16位):-22 1 35 121 -120 65 114 75 127 -34 31 -21 51 -37 -97 -118
5、转换成16进制表示的字符串
下面的代码完成转换:
// 构造长度为2倍的字符串
char newStr[] = new char[32];
// 循环进行处理
for (int i = 0; i < 16; i++) {
byte tmp = newBytes[i];
newStr[2*i] = hexDigits[tmp >>> 4 & 0xf];
newStr[2*i+1] = hexDigits[tmp & 0xf];
}
转换后的字符串(32位):ea0123798841724b7fde1feb33db9f8a
提示:如果需要把转换后的密码保存到数据库中,需要使用的类型为:char(32)。
完整的参考代码如下:
package test;
import java.security.*;
class MD5_Test {
public final static String MD5(String oldStr) {
char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'a', 'b', 'c', 'd', 'e', 'f' };
System.out.println("原始字符串为:"+oldStr);
try {
// 参数oldStr表示要加密的字符串
// 转换成字节流
byte[] oldBytes = oldStr.getBytes();
for(byte b:oldBytes)
{
System.out.print(b+" ");
}
System.out.println();
// 得到对象
MessageDigest md = MessageDigest.getInstance("MD5");
// 初始化
md.update(oldBytes);
// 运行加密算法
byte[] newBytes = md.digest();
for(byte b:newBytes)
{
System.out.print(b+" ");
}
System.out.println();
// 构造长度为2倍的字符串
char newStr[] = new char[32];
// 循环进行处理
for (int i = 0; i < 16; i++) {
byte tmp = newBytes[i];
newStr[2*i] = hexDigits[tmp >>> 4 & 0xf];
newStr[2*i+1] = hexDigits[tmp & 0xf];
}
System.out.println(newStr);
return new String(newStr);
} catch (Exception e) {
return null;
}
}
public static void main(String[] args) {
System.out.println(MD5_Test.MD5("lixucheng"));
}
}
登录注册功能使用md5对密码进行加密     之前一直搞不清楚md5加密,从网上查了好多资料、看了几个视频都没实现成功。这一次参加学校的集中实习,培训老师带我们简单实现了一下。    要简单实现并不难,先从网上down一个简单的md5算法:package com.train.util; import java.math.BigInteger; import java.security.MessageDigest; import jav... 阅读详情

相关推荐

MD5加密算法及Java实现

MD5加密算法及Java实现 上个学期在学数据库的时候,大作业是用Java Web+MySQL实现一个简易的系统,其中老师就提到了MD5算法,用来将用户提交的密码进行加密后放在数据库中,以防被泄露。在网页上进行表单校验时,也是将数据库中用户的散列值与用户提交的密码进行映射后得到的散列值进行比对。java.security中提供了一个MessageDigest类,提供了很多此类密码散列函数,如MD5和SHA(安全散列算法 Secure Hash Algorithm)等,所以只需要调用即可,不用亲自实现。 这个

weixin_44167788的博客 2122

java hex转换输出(可以打印字节码.class文件内容)

不依赖于任何jar包. 打印 .class 文件内容. ``` public class HexDump { /** 十六进制的组成元素 */ private final static char[] HEX_DIGITS = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; public static String dumpHexString(byte[] ar

who7708的专栏 1066

java/web工具类之MD5、AES、Base64算法数据加密

java/web工具类之MD5、AES、Base64算法数据加密 对加密解先理解: 比如:甲乙双方要通信,中间的连接可能被人窃听甚至篡改。解决办法就是把传输的内容进行加密,用密文去传输,这样即使被监听也没办法知道信息的具体内容。 加密时,甲乙双方可以约定一个密码A,甲用A加密,乙用A解密,这就是对称加密。 对称加密存在一个问题是:密钥怎么传递给对方? 貌似没解,于是就出现了非对称加密,非对称加密时...

空空说技术的博客 1629

Java实现MD5加密的方式

  MD5加密是一种常见的加密方式,我们经常用在保存用户密码和关键信息上。那么它到底有什么,又什么好处呢,会被这么广泛的运用在应用开发中。   1、什么是MD5   MD5加密全程是Message-Digest Algoorithm 5(信息-摘要算法),它对信息进行摘要采集,再通过一定的位运算,最终获取加密后的MD5字符串。   例如我们要加密一篇文章,那么我们会随机从每段话或者每行中获取...

此心光明,亦复何言~ 14万+

Java实现RC4加密算法、RSA算法、MD5算法

Java实现RC4加密算法、RSA算法、MD5算法,实现文件加密、解密、密码加密解密。

渴望飞的鱼的博客 3528

JSP实现MD5加密完整教程

本文还有配套的精品资源,点击获取 简介:MD5是一种广泛使用的哈希函数,用于数据校验和加密。在JSP中,MD5可用于用户密码处理等场景,确保数据安全。该教程可能包含一个实现了MD5算法的JSP页面,介绍了MD5算法基础、Java MD5实现、JSP语法、JavaBean使用、安全注意事项以及应用场景。通过学习本教程,开发者可以深入理解MD5在JSP环境中的实现和应用。 ...

weixin_29323977的博客 1475

java双向加密算法_Java加密算法

Java加密算法有三种:1、单向加密算法2、对错加密算法3、非对称加密算法单向加密算法单向加密是不可逆的加密算法,加密的密文不能解密,常见的算法有MD5、SHA、HMAC。MD5(信息摘要算法)无论多长数据最后都编码成128位数据,同样数据一直一致。用途:可用做文件校验、密码加密、散列数据。代码:public staticString getMD5Str(String s) {try{Messag...

weixin_42509847的博客 900

为什么你的ESXI无法识别移动硬盘?一步步教你解决USB存储挂载问题

本文深入解析了ESXi无法识别移动硬盘的根本原因,并提供了从诊断到解决的完整方案。核心在于理解ESXi的USB Arbitrator服务机制,通过检查服务状态、内核设备识别及分区表,逐步定位问题。文章详细指导了如何禁用USB仲裁服务以在主机挂载USB存储,或将其直通给虚拟机,并针对大容量硬盘、USB 3.0兼容性等进阶问题给出了实用建议。

qq_27496129的博客 332

Java web--MD5加密

MD5(MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值,用于确保信息传输完整一致。

qq_43238335的博客 1788

Qlib+backtrader:2014.1.1-2023.9.20最新回测结果,可以实盘吗?

今年以来,在研究了qlib和backtrader的基础上,把二者结合起来进行了一个策略研究。简单说就是用qlib在200只股票的股票池中进行滚动训练与预测(walk forward),总体数据范围是2005到2023年,以20日间隔滚动训练和预测,最终得到2014.1.1-2023.9.20共10年测试期的收益率预测结果。将预测结果代入backtrader进行回测,得到如下回测结果。

qtbgo的博客 1783

把STM32MP135当单片机玩:实战SD卡脱机运行LED程序(基于MP135DK开发板)

本文详细介绍了如何在STM32MP135开发板上实现SD卡脱机运行LED程序,通过裸机开发方式(Bare Metal)利用HAL库完成GPIO控制,并解析了SD卡启动流程。内容涵盖工程创建、代码编写、SD卡烧录及常见问题排查,为开发者提供了一种高性能单片机开发方案。

weixin_33734785的博客 242

Java实现md5加密

本文介绍Java实现md5加密技术

逐梦苍穹的博客 1万+

Cloudflare 5秒盾逆向实战:从503到cf_clearance的全流程拆解(附避坑指南)

本文深入拆解了Cloudflare 5秒盾的完整逆向流程,从首次503响应到最终获取cf_clearance令牌,详细解析了五层挑战机制。文章重点分享了实战中的核心避坑指南,包括时间戳校验、动态图片尺寸获取、会话保持方案选择以及复杂环境检测的应对策略,为开发者提供了一套绕过5秒盾的实用方法论。

weixin_29327977的博客 2313

SpringBoot+随机盐值+双重MD5实现加密登录

SpringBoot+随机盐值+双重MD5实现加密登录。加盐(盐英文就是salt):在密码学中,是指通过在密码任意固定位置插入特定的字符串,让散列后的结果和使用原始密码的散列结果不相符,这种过程称之为”加盐“。 MD5信息摘要算法(英语:MD5 Message-Digest Algorithm):一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于199

浩泽学编程的博客 4125

Windows部署OpenClaw报错不断?这篇环境配置指南帮你解决难题

想在Windows上部署OpenClaw却频频报错?🔧 本文详细梳理了OpenClaw部署必需环境的安装步骤和官方下载地址 📦,提供完整的验证清单和常见问题排查方法,帮你一次性搞定所有环境配置,顺利部署OpenClaw ✅

XiaoqiangClub的博客 6660

ConvNeXt 改进 :ConvNeXt添加GnConv递归门控卷积,二次创新CNBlock结构 ,独家首发

视觉 Transformer 在多种任务中取得了显著的成功,这得益于基于点积自注意力的新空间建模机制。视觉 Transformer 中的关键因素——即输入自适应、长距离和高阶空间交互——也可以通过卷积框架高效实现。作者提出了递归门控卷积(Recursive Gated Convolution,简称 gnConv),通过门控卷积和递归设计执行高阶空间交互。该新操作具有高度的灵活性和可定制性,兼容各种卷积变体,并将自注意力中的二阶交互扩展到任意阶数,而不会引入显著的额外计算。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 241

JAVA简单实现MD5注册登录加密

开发环境:jdk1.7,eclipse 框架:springmvc,mybatis 工具:maven 以下代码复制即可实现MD5加密创建一个mave项目,加web。不懂得可以搜索一下就有了。注册用户的JSP页面代码如下。<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%

大圣即大盗 2万+

innovus:sroute 双层follow pin的做法

根据std cellpower pin的层次可以分成两种情况。

m0_61544122的博客 2733

【Java】使用MD5进行加密解密(代码实现)

我们的,对于用户来说,不应该知道我们的在正式环境,我们的数据需要通过网络传输,必须要保证明文:加密之前的内容,原始内容暗文:加密之后的内容公钥:可见的公共的钥匙私钥:不可见的私有的钥匙作用:一般对登录密码处理,用于做密码比对问题:只能加密,不能解密,特征:1. 可以加密,也可以解密2. 加密和解密的密钥是同一个作用:对数据库密码进行加密,秘钥为k,加密:s = AES(k,c)解密:c = AES(k,s)问题:1. 数据可能会被其他人2. 数据可能会。

m0_64210833的博客 4万+

别再只当调包侠了!YOLO检测头到损失函数全链路拆解,看完才算真懂

YOLO的精妙不在于某个单一创新,而在于各模块围绕“实时精准检测”这一目标的协同设计。Backbone追求高效特征压缩,Neck保障多尺度信息流通,Head解耦任务冲突,Loss动态引导优化方向。只有理解这套内在逻辑,才能跳出“调包-试错”的低效循环,在面对新场景、新问题时做出有理有据的改进决策。技术深度决定职业天花板。下次再调YOLO时,不妨先问自己:我改的这个参数,到底影响了系统中的哪一环?参考资料。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 186

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

java web md5加密方式_Java web Md5加密

直接上代码package com.mobileserver.domain;import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import sun.misc.BASE64Encoder;public c...

weixin_29323551的博客 479

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

使用Java自带API进行MD5加密

转载自 因为毕业设计的缘故,研究了一下网站的加密,做了一个MD5加密,也算是一个小小的加密、但是在Web程序上不论是在客户端还是服务端加密理论上都是不安全的,我们要使用HTTPS这个协议来保证通信的全加密再加上MD5加密才比较安全、MD5是一个不可逆的加密算法、所以一般来说只要加密就好、不需要解密程序.数据库中存入的也是加密过得密码就行了、下面直接上代码 [

1984

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

前端md5加密_浅谈web安全之前端加密

简介数学是现代加密的基础,而加密,是现代一切认证实现的基础。在web中,很多场景登陆的账号密码请求都是经过 js 加密之后再发送,如图通过burp抓包可以看到加密信息. 很明显可以看到 password 参数的值是经过前端加密之后再进行传输的,遇到这种情况,普通发包的爆破脚本就很难爆破成功。所以我们需要明白基础的加密概念,与常见的加密方式。下面总结几种常见的加密,与真实案例中的加密对抗。...

weixin_30204677的博客 1073
上一篇: Java Web实践专题——基本MVC实例
下一篇: Java Web实践专题——图形验证码的生成与使用
Java_Web_Book
博客等级 码龄18年 8粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值