在各种应用系统的开发中,经常需要存储用户信息,很多地方都要存储用户密码,而将用户密码直接存储在服务器上显然是不安全的,本文简要介绍工作中常用的
MD5加密算法,希望能抛砖引玉。
(一)消息摘要简介
一个消息摘要就是一个数据块的数字指纹。即对一个任意长度的一个数据块进行计算,产生一个唯一指印(对于SHA1是产生一个20字节的二进制数组)。消息摘要是一种与消息认证码结合使用以确保消息完整性的技术。主要使用单向散列函数算法,可用于检验消息的完整性,和通过散列密码直接以文本形式保存等,目前广泛使用的算法有MD4、MD5、SHA-1.
消息摘要有两个基本属性:
两个不同的报文难以生成相同的摘要难以对指定的摘要生成一个报文,而可以由该报文反推算出该指定的摘要代表:美国国家标准技术研究所的SHA1和麻省理工学院Ronald
Rivest提出的MD5。
(二)对字符串进行加密
/** *//**利用MD5进行加密
* @param str 待加密的字符串
* @return 加密后的字符串
* @throws NoSuchAlgorithmException 没有这种产生消息摘要的算法
* @throws UnsupportedEncodingException
*/
public String EncoderByMd5(String str) throws NoSuchAlgorithmException,
UnsupportedEncodingException...{
//确定计算方法
MessageDigest md5=MessageDigest.getInstance("MD5");
BASE64Encoder base64en = new BASE64Encoder();
//加密后的字符串
String newstr=base64en.encode(md5.digest(str.getBytes("utf-8")));
return newstr;
}
调用函数:String str="0123456789"
System.out.println(EncoderByMd5(str));
输出:eB5eJF1ptWaXm4bijSPyxw==
(三)验证密码是否正确
因为MD5是基于消息摘要原理的,消息摘要的基本特征就是很难根据摘要推算出消息报文,因此要验证密码是否正确,就必须对输入密码(消息报文)重新计算其摘要,和数据库中存储的摘要进行对比(即数据库中存储的其实为用户密码的摘要),若两个摘要相同,则说明密码正确,不同,则说明密码错误。
/** *//**判断用户密码是否正确
* @param newpasswd 用户输入的密码
* @param oldpasswd 数据库中存储的密码--用户密码的摘要
* @return
* @throws NoSuchAlgorithmException
* @throws UnsupportedEncodingException
*/
public boolean checkpassword(String newpasswd,String oldpasswd) throws NoSuchAlgorithmException,
UnsupportedEncodingException...{
if(EncoderByMd5(newpasswd).equals(oldpasswd))
return true;
else
return false;
}
简单…………
分享到:
相关推荐
需要注意的是,由于MD5的碰撞问题,现在在安全领域,MD5已经不被视为安全的加密算法,更推荐使用如SHA-256或更强的哈希函数。在处理敏感信息,尤其是用户密码时,通常会结合盐值(salt)和多次迭代来提高安全性,...
在 Java 中使用 MD5 加密算法进行加密非常简单。首先,需要使用 MessageDigest 类来实例化一个 MD5 对象,然后使用 digest 方法来计算输入字符串的摘要。最后,使用 BASE64 编码将摘要转换为字符串。 在实际应用中...
总结,Java实现MD5加密算法主要是通过`java.security.MessageDigest`类,经过`getInstance("MD5")`获取MD5实例,然后使用`digest()`和`update()`方法处理数据,最终将二进制摘要转换为十六进制字符串。尽管MD5的安全...
java实现MD5加密解密算法,java源代码~
在Java编程语言中,MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,主要目的是为了产生一个固定长度的、不可逆的数字摘要,常用于存储密码。MD5算法将任意长度的输入(也叫做预映射,pre-image)通过...
### MD5加密算法详解 #### 一、MD5算法简介 MD5(Message-Digest Algorithm 5)是一种广泛使用的散列函数(哈希函数),它能够接收任意长度的数据输入,并生成一个固定长度(通常为128位)的十六进制数值作为输出...
综上所述,基于JAVA技术实现的MD5加密算法不仅可以有效地应用于数字签名、电子商务等多个领域,还具有开发周期短、一次开发多处应用、可跨平台使用、运行效率高等优势。通过结合JavaBean和JSP技术,不仅能够简化开发...
MD5加密算法是一种广泛使用的哈希函数,用于生成...总结来说,MD5加密算法在Java中的实现相对简单,通过`java.security.MessageDigest`类即可轻松完成。然而,在实际应用中,应根据具体的安全需求选择合适的散列算法。
对接接口时用到的一种常用加密算法,常用于验证签名,使用shiro-all-1.4.1.jar,可自行下载
java实现md5 加密解密(在网络中MD5是著名的不可逆算法,但是如果知道MD5的加密的字符串 则可以通过自己的加密算法对明文进行加密,对加密后的密文与字符串匹配; 匹配成功,表示找到明文;但是此程序的时间耗费较高!仅...
Java中实现MD5加密算法的简单实例主要介绍了如何使用Java语言来实现MD5加密算法,提供了一个简单的实例帮助大家应用这样的加密算法。MD5加密算法是一种不可逆的加密算法,破解的难度很高,通常将加密后的密文保存在...
java与c#MD5加密方法得到不一致解决办法,MD5加密后得到不一致结果
在给定的压缩包文件中,有两个MD5加密类:MD5.java和MD5_simple.java。这两个类可能实现了MD5加密的不同方法。通常,MD5加密过程包括以下几个步骤: 1. **预处理**:原始数据会被填充到特定长度,加上一个长度标识...
\基于JAVA技术的MD5加密算法的设计与实现
MD5算法的设计与实现可以结合JAVA技术中的JSP(Java Server Page)和JavaBean组件,来实现高效、跨平台、安全的加密算法。 MD5算法的描述可以简述为:以512位分组来处理输入字节串的信息,每一分组又被划分为16个32...
使用微信支付签名MD5加密算法。可以使用,可以根据微信签名工具验证,是一样的。 如果提示“签名失败“,就要考虑到key只是否一致。统一下单和发起支付时的key值要一样的。
本文将详细介绍如何在Java环境中实现两种常见的加密算法:MD5加密算法和3-DES加密算法。 #### 一、MD5加密算法 **1.1 MD5算法简介** MD5(Message-Digest Algorithm 5)是一种广泛使用的散列函数,可以生成一个...
标题:Java MD5加密算法 描述与标签:Java MD5加密算法 知识点: 1. **MD5算法简介**: MD5(Message-Digest Algorithm 5)是一种广泛使用的散列函数,可以将任意长度的数据(如文件、字符串等)转换为一个固定...
MD5加密算法的java实现,用于用户登录验证等