DigestUtils.md5Hex("123")
为了提高用户密码的安全性。我在这边用一个MD5对密码进行摘要然后再存数据库
目的是为了密码存在数据库中不是明文显示。
如果是明文显示。当别人进入你的数据库就可以看到你的密码了。
你用MD5进行摘要后再存入数据库。当你进行登录时就把你输入的密码进行摘要再和数据库对比。这样一来就会提高你的密码安全。
简介如下:
在JSP程序中,用MD5算法的常用之处就是对用户登录密码的加密和验证。在数据库中,存放系统用户信息的用户表中常常会有用户登录密码这个字段,如果不对密码作加密码处理,放在这个字段中的密码就会是明文,只要能打开数据库并拥有对用户表的查询权限,就可以直接看到用户的登录密码,这样是不够安全的。为解决这个问题,可以采用MD5算法来对密码计算摘要处理,然后把计算后的摘要存放到密码字段中,那么在数据库的用户表中查看到的将不是明文了。
MD5算法并不是对数据的加密处理,而是对数据采用MD5算法来记录数据特征(称为摘要)的一段字符串,对于同一个数据,计算出来的摘要是相同的。因此,在用户注册时,就在用户表的密码字段存放根据密码数据用MD5算法计算出来的摘要;在下次登录时,根据用户输入的密码作MD5算法计算摘要处理,如果计算出来的摘要与用户表中存放的摘要相同,则表示密码正确。
对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
//生成可用来使用MD5算法计算的对象,source变量为字节数组类型 MessageDigest md = MessageDigest.getInstance("MD5"); //计算消息摘要 byte[] tempMD5Byte = md.digest(source); //进行BASE64编码 BASE64Encoder encoder = new BASE64Encoder(); encoderByMd5 = encoder.encode(tempMD5Byte); |
BASE64Encoder编码原理:
1、首先取ABC对应的ASCII码值。A(65)B(66)C(67);
2、再取二进制值A(01000001)B(01000010)C(01000011);
3、然后把这三个字节的二进制码接起来(010000010100001001000011);
4、再以6位为单位分成4个数据块,并在最高位填充两个0后形成4个字节的编码后的值,(00010000)(00010100)(00001001)(00000011),其中蓝色部分为真实数据;
5、再把这四个字节数据转化成10进制数得(16)(20)(9)(3);
6、最后根据BASE64给出的64个基本字符表,查出对应的ASCII码字符(Q)(U)(J)(D),这里的值实际就是数据在字符表中的索引。
注:
BASE64字符表:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
实例如下:
1建一个进行计算的类如下:
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import sun.misc.BASE64Encoder;
public class MD5 {
public String getMD5(String source){
String md5Str = "";
try {
//生成可用来使用MD5算法计算的对象
MessageDigest dm = MessageDigest.getInstance("MD5");
//传入要计算的明文
dm.update(source.getBytes());
//计算摘要
byte[] md5Byte = dm.digest();
//使用BASE64编码
BASE64Encoder encoder = new BASE64Encoder();
md5Str = encoder.encode(md5Byte);
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return md5Str;
}
}
上面这个类返回的是一个摘要的String 型的。Source是一个你输入的密码;
相关推荐
MD5算法通过多次迭代计算,包括加法、异或和位移操作,确保即使微小的输入变化也会导致显著不同的输出摘要,这使得MD5具有一定的抗碰撞特性。 在web开发中,MD5加密组件通常用于用户注册时的密码处理。当用户创建...
Spark-MD5还支持其他高级功能,如直接处理Blob对象和字符串,以及提供同步和异步计算接口。这些特性使得Spark-MD5在处理前端项目中的数据校验和安全问题时,表现出极高的灵活性和效率。 总结,"前端项目-spark-md5....
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,能够将任意长度的数据转化为固定长度的128位(16字节)摘要,通常以32位的十六进制字符串表示。这个加密工具可以帮助开发人员确保数据的安全性,例如在...
3. **数字摘要与MD5/SHA算法**:数字摘要是一种将任意长度的输入转换为固定长度输出的函数,用于验证数据的完整性。MD5和SHA是常用的散列算法,它们不可逆,能快速验证数据是否被篡改。 4. **对称加密与非对称加密*...
在这个毕业设计项目中,主要涉及了三个核心的技术领域:富文本解析、折线图的绘制以及MD5哈希计算,都是在现代Web开发中至关重要的技术。下面将详细阐述这三个方面的知识。 首先,富文本解析涉及到的是HTML和CSS的...
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,可以将任意长度的数据转化为固定长度的128位(16字节)摘要。在小程序中,MD5常用于数据加密、文件校验和用户密码存储。例如,当用户注册时,将输入的...
在信息安全领域,MD5曾被普遍用于验证文件的完整性,因为一个文件通过MD5算法计算出的32位十六进制摘要(也称作哈希值或MD5值)是唯一的,只要文件内容有任何改变,MD5值就会发生变化。 "E-MD5 2.0.rar"是一个可能...
7. **消息摘要与数字签名**:消息摘要如MD5和SHA系列算法,可以生成消息的固定长度表示,用于检测数据完整性。数字签名结合了消息摘要和非对称加密,既能验证消息来源的真实性,又能确保消息未被篡改。 这些知识点...
4. **MD5加密算法**:MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,可以将任意长度的信息映射为固定长度的摘要。在本项目中,MD5被用于用户密码的加密,确保了密码的安全性,即使数据泄露,也无法...
在Web开发中,这种方法常用于预览小尺寸图片或者在不支持外部资源链接的情况下显示图像。图片Base64转换工具可以方便地将图片文件转换为Base64字符串,也可以将Base64字符串还原为原始图片文件。 **Base64加解密** ...
- 哈希函数:如MD5或SHA-1,将任意长度的信息映射为固定长度的摘要,常用于验证数据完整性,但不适用于加密。 4. 图片加密原理: 8tupian图片加密平台可能采用了某种加密算法,将图片的像素值进行变换,使其在未...
这个库广泛应用于Web开发中,特别是对于那些需要在客户端进行数据加密的场景,比如密码保护、数据传输安全等。下面将详细介绍CryptoJS库以及它包含的一些核心组件。 1. **AES(Advanced Encryption Standard)加密*...
单向散列函数如MD5和SHA,用于产生固定长度的唯一消息摘要,用于验证信息的完整性和一致性。 在SSL/TLS的握手过程中,客户端首先发送一个Client Hello消息,包含支持的密码套件(对称加密算法、非对称加密算法、...
它适用于各种应用,包括Web开发、数据分析、人工智能、自动化任务等。 在描述中提到的MD5校验码(C86949710E0471A065DB970290819489)是文件完整性的一种验证方式。MD5(Message-Digest Algorithm 5)是一种哈希...
3. 哈希加密:如MD5、SHA-1、SHA-256等,将任意长度的数据转换为固定长度的摘要,常用于数据完整性校验,但不适用于加密,因为无法恢复原始数据。 二、JavaScript加密库 1. CryptoJS:一个流行的JavaScript加密库...
例如,`md5()`用于计算哈希值,`sha1()`用于更安全的哈希,而`openssl_encrypt()`和`openssl_decrypt()`则提供了高级的加密功能,支持多种加密算法,如AES、DES等。 2. 对称加密算法: 对称加密是加密解密中最常见...
C#在软件开发中的应用十分广泛,特别是在桌面应用程序、游戏开发、Web服务以及移动应用等领域。本压缩包“C#加密程序源代码.rar”包含了一些关于C#语言中加密算法实现的源代码,这为我们提供了深入理解C#编程和加密...