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

水文模型大合集---SWAT模型、VIC模型、HEC-HMS模型、HSPF模型、FVCOM模型、Delft3D模型、HYPE模型.......

1.1 面源污染概要1.2 SWAT模型及应用1.3 SWAT模型原理1.4 SWAT模型输入文件1.5 ArcGIS与SWAT关系。

jwwkyjspt的博客 4361

Java web--MD5加密

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

qq_43238335的博客 1788

Blazor Session设置

微软官方封装了一些浏览器的操作,其中就有Session的操作的封装ProtectedSessionStorage 微软文档因为我们知道,依赖注入的生命周期是Singleton程序Scoped网页:刷新,url直接跳转都会重置。Transient路由C# Blazor 学习笔记(10):依赖注入但是没有一个和浏览器绑定的生命周期。即浏览器关闭才会退出。这个是后端无法获取的,因为后端根本不知道浏览器何时关闭。这个只能用浏览器自带的缓存。

qq_44695769的博客 1788

Doorbell机制在PCI与MSI中断中的高效应用

本文深入解析了Doorbell机制在PCIe设备与CPU间通信中的核心作用。作为一种高效的硬件通知机制,它通过内存映射I/O(MMIO)实现软件对硬件的轻量级触发,常与MSI中断协同工作,构建高效的生产者-消费者模型。文章以AMD GPU的Ring Buffer命令提交为例,阐述了该机制如何显著降低CPU开销、提升系统吞吐量,并对比了其与传统中断方式的性能优势。

ee345的博客 610

Java实现md5加密

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

逐梦苍穹的博客 1万+

2024最新版Anaconda Navigator安装使用指南

本文简要介绍如何下载安装Anaconda Navigator最新版,以及如何使用Python内核搭载来完成应用程序开发。

jackson_lingua的博客 1万+

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

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

浩泽学编程的博客 4124

C# 进阶:打造WinForms中的动态交互式UserControl

本文深入探讨了如何在C# WinForms中创建动态交互式UserControl,以提升桌面应用的用户体验和代码复用性。通过剖析UserControl生命周期、事件体系,并结合一个可拖拽缩放的分割面板实战案例,详细讲解了鼠标键盘事件处理、自定义绘制、状态管理以及性能优化等核心技巧,帮助开发者封装复杂交互逻辑,打造专业级自定义控件。

weixin_29279153的博客 462

优化点列图(RMS半径)的操作数

优化点列图(RMS半径)的操作数

weixin_72050316的博客 2260

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万+

基于MATLAB开发AUTOSAR软件应用层模块-part3.自动生成的代码文件介绍

上篇文章我们介绍了如何设计一个简单的模型,之后自动生成autosar架构的代码,这篇文章我带大家看下,生成了哪些文件,以及这些文件的内容。 生成的文件见下图: model files是模型控制逻辑部分代码,包括 DEMO1.c DEMO1.h DEMO1_private.h DEMO1_types.h DEMO1.c 1 /* 2 * File: DEMO1.c 3 * 4 * Cod.

汽车软件开发 1978

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

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

m0_64210833的博客 4万+

ASPICE(Automotive SPICE)流程落地,研发管理工具自研,如何从量化数据体现研发效率提升的

摘要: ASPICE流程显著提升研发效率,主要体现在质量、成本和时间三个维度。关键量化指标包括:缺陷率降低30%-60%,维护工作量减少28%,研发周期缩短10%-20%,需求变更率降低58%,代码评审效率提升300%。初期开发成本虽增加9%,但长期回报率高。核心方法包括缺陷预防前移、需求精准管理和流程标准化与自动化。建立量化度量体系需覆盖缺陷密度、需求稳定性、进度偏差等指标,并依托工具链支持数据收集。实施ASPICE是短期投入换取长期质量提升和成本优化的高效投资。

汽车软件开发 186

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

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

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

使用Java自带API进行MD5加密

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

1984

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

前端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、付费专栏及课程。

余额充值