- 浏览: 414239 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (202)
- Oracle (35)
- MsSQL (10)
- MySQL (8)
- Jsp (7)
- Java 基础 (21)
- 零星点缀 (20)
- PowerDesigner (3)
- dotNet (5)
- Hibernate (8)
- 搜索技术 (3)
- Linux (18)
- jQuery (4)
- POI/excel/word (2)
- javascript (6)
- PHP (4)
- JSTL (3)
- winows 操作系统 (6)
- HTML基础 (2)
- 网络兼职 (3)
- spring (7)
- 人生 (2)
- 网络协议之Http (3)
- JDBC (1)
- FSO(FileSystemObject)技术 (3)
- css样式 (1)
- EnterpriseDb (2)
- VMware (1)
- Android (1)
- 数据转换工具=》 (1)
- Oracle-->statspack (2)
- Oracle==>性能 (1)
- Greenplum (1)
- 库的转换 (1)
- DOS (1)
最新评论
-
青春的、脚步:
xingmei_ok 写道解密失败。。。。原始:aMD5后:0 ...
java的MD5加密、解密 -
xingmei_ok:
New_Mao_Er 写道看着标题我就蛋疼了,md5 是一个摘 ...
java的MD5加密、解密 -
New_Mao_Er:
看着标题我就蛋疼了,md5 是一个摘要算法,是无法解密的,如果 ...
java的MD5加密、解密 -
xingmei_ok:
解密失败。。。。
原始:a
MD5后:0cc175b9c0f ...
java的MD5加密、解密 -
yinxueyuan122:
[b][/b][size=xx-small][/siz ...
java的MD5加密、解密
在各种应用系统的开发中,经常需要存储用户信息,很多地方都要存储用户密码,而将用户密码直接存储在服务器上显然是不安全的,本文简要介绍工作中常用的 MD5加密算法,希望能抛砖引玉。
(一)消息摘要简介
一个消息摘要就是一个数据块的数字指纹。即对一个任意长度的一个数据块进行计算,产生一个唯一指印(对于SHA1是产生一个20字节的二进制数组)。消息摘要是一种与消息认证码结合使用以确保消息完整性的技术。主要使用单向散列函数算法,可用于检验消息的完整性,和通过散列密码直接以文本形式保存等,目前广泛使用的算法有MD4、MD5、SHA-1。
消息摘要有两个基本属性:
两个不同的报文难以生成相同的摘要
难以对指定的摘要生成一个报文,而可以由该报文反推算出该指定的摘要
代表:美国国家标准技术研究所的SHA1和麻省理工学院Ronald Rivest提出的MD5
(二)对字符串进行加密
(三)验证密码是否正确
因为MD5是基于消息摘要原理的,消息摘要的基本特征就是很难根据摘要推算出消息报文,因此要验证密码是否正确,就必须对输入密码(消息报文)重新计算其摘要,和数据库中存储的摘要进行对比(即数据库中存储的其实为用户密码的摘要),若两个摘要相同,则说明密码正确,不同,则说明密码错误。
具体如下:
参看:
http://school.cfan.com.cn/pro/java/2007-06-11/1181531460d67777.shtml
(一)消息摘要简介
一个消息摘要就是一个数据块的数字指纹。即对一个任意长度的一个数据块进行计算,产生一个唯一指印(对于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; }
具体如下:
package com.common.util.md5; import java.io.FileWriter; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import sun.misc.BASE64Encoder; /** * @author vvvvvv * @version 創建時間:Jan 21, 2010 10:44:05 AM * 参看:http://blog.sina.com.cn/s/blog_4b86f2ee010006t5.html * http://www.iteye.com/topic/202896 * 類說明:MakeMd5.java */ public class MakeMd5 { public String EncodeByMd5(String str) throws NoSuchAlgorithmException, UnsupportedEncodingException{ //确定计算方法 //目前广泛使用的算法有MD4、MD5、SHA-1,jdk1.5对上面都提供了支持,在java中进行消 //息摘要很简单, java.security.MessageDigest提供了一个简易的操作方法: //使用getInstance("算法")来获得消息摘要,这里使用SHA-1的160位算法 MessageDigest md5 =MessageDigest.getInstance("MD5"); BASE64Encoder base64Encoder = new BASE64Encoder(); //加密后的字符串 String newStr = base64Encoder.encode(md5.digest(str.getBytes("utf8"))); return newStr; } /** * 加密的具体应用 * @author vvvv * @time Jan 21, 201011:52:28 AM * @param @param newPassword 页面的接收值 * @param @param oldPassword 数据库中存储的密码--用户密码的摘要 * @param @throws NoSuchAlgorithmException * @param @throws UnsupportedEncodingException * return boolean */ public boolean checkPassword(String newPassword, String oldPassword) throws NoSuchAlgorithmException, UnsupportedEncodingException{ if(EncodeByMd5(newPassword).equals(oldPassword)){ return true; //密码一致 }else{ return false ;//密码不一致 } } public String writeToFile(String newString) throws IOException{ FileWriter fw = new FileWriter("D:/aa.txt"); fw.append(newString); fw.flush(); fw.close(); return null; } /** * @author vvvv * @throws NoSuchAlgorithmException * @throws IOException * @time Jan 21, 201010:44:05 AM * return void */ public static void main(String[] args) throws NoSuchAlgorithmException, IOException { MakeMd5 md5 = new MakeMd5(); System.out.println(md5.EncodeByMd5("张三")); md5.writeToFile("sadf"+md5.EncodeByMd5("zzz")); } }
参看:
http://school.cfan.com.cn/pro/java/2007-06-11/1181531460d67777.shtml
发表评论
-
MyEclipse 下Tomcat 项目的重命名
2010-09-07 09:30 1031为了开发方便,经常复制项目,但是又不能发布 :: 解决:项目 ... -
final关键字
2010-06-15 15:23 877Java的关键字final的含义存在着细微的区别,但通常它指的 ... -
static相关的内容(静态类、方法、变量、域,以及非静态的 学习
2010-06-15 15:06 1186static解析 http://www.iteye.com/ ... -
dom4j 完成学生的CRUD (转)
2010-06-15 14:07 1123dom4j是一种解析XML文档的开放源代码XML框架,本文就来 ... -
Java中重载与重写的区别
2010-06-15 14:03 1557Java中重载与重写的区别 ... -
Request对象的所有的方法
2010-06-15 12:45 1472Request对象的主要方法: setAttribute(S ... -
优化myeclipse的速度
2010-05-31 15:45 7441、去除不需要加载的模块 一个系统20%的功能往往能够满足8 ... -
MyEclipse 6.X集成svn的方式有两种
2010-05-31 15:37 1084在这里添加日志标题MyEclipse 6.X集成svn的方式基 ... -
Class bytes found but defineClass()failed for: 错误解决
2010-05-31 15:36 4084JDK 的版本不兼容 检查一下你编译环境的JDK版本和在容 ... -
计算两个日期之间相差的天数
2010-04-01 15:36 1881程序经过一系列处理,得到两个string类型的时间值,一个值的 ... -
java List分组和排序处理 Map 应用
2010-03-19 16:27 6539package com.common.main.mapAn ... -
Java正则表达式详解
2010-03-19 15:16 808覺得不錯收藏一下: http://blog.csdn.net/ ... -
Java如何遍历Map的所有的元素
2010-03-19 15:13 813JDK1.4中 Map map = new HashMap( ... -
Java线程之线程同步
2010-02-08 23:01 1012注:wait notify 都是Object的方法 同步(阻塞 ... -
使用javamail发信过程中的一些问题及解决方法(转)
2010-01-25 14:03 1156今天在弄javamail 发现下面这篇不错,转过来!! 使用j ... -
java 中发送邮件内容的各种基本生成方式
2010-01-25 13:56 2435/*通过JAVAMail发送邮件步骤: 1 构建Sessi ... -
Java加密和数字签名编程快速入门(转)
2010-01-21 13:36 1079最近在看加密的东东,觉得这个挺不错。转来学习~ ~ Java加 ... -
java的MD5加密、解密
2010-01-21 13:03 46348简单demo: import java.security.*; ... -
Java面试中遇到的一些经典算法题目
2009-12-07 22:44 9321.写一个方法,用一个for循环打印九九乘法表 Java代 ... -
System.exit(-1)和return 的区别
2009-11-10 16:21 1551对于只有一个单一方法的类或者系统来说是一样的,但是对于含有多个 ...
相关推荐
java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密...
### 在Java中使用MD5进行密码加密 #### 知识点概述 在现代软件开发过程中,安全性至关重要。尤其是在处理敏感信息如用户密码时,确保数据的安全性和隐私性尤为重要。MD5(Message-Digest Algorithm 5)是一种广泛...
java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法...
java中的MD532位加密。将java类放入项目中,使用encrypByMd5静态方法即可生成hex_md5 32位加密的字符串。
下面我们将详细介绍如何使用Java语言实现对文件进行MD5加密的过程。 #### MD5加密原理 MD5算法通过一系列复杂的数学运算,将输入的信息转换为一个固定的128位输出值。该输出值通常被表示为一个32位的十六进制数,...
C# MD5加密类型支持:1-16位的加密;2-32位加密;3:base64加密对应JAVA md5 16位的加密;2-32位加密;3:base64加密
Java中实现Md5(32位)加密,此资源下载后可直接在程序中使用
java实现md5 加密解密(在网络中MD5是著名的不可逆算法,但是如果知道MD5的加密的字符串 则可以通过自己的加密算法对明文进行加密,对加密后的密文与字符串匹配; 匹配成功,表示找到明文;但是此程序的时间耗费较高!仅...
java与c#MD5加密方法得到不一致解决办法,MD5加密后得到不一致结果
在Java编程语言中,MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,主要目的是为了产生一个固定长度的、不可逆的数字摘要,常用于存储密码。MD5算法将任意长度的输入(也叫做预映射,pre-image)通过...
在Java编程语言中,MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它将任意长度的数据转化为固定长度的输出,通常为32位的16进制字符串。MD5的主要用途是对数据进行校验,确保数据在传输过程中没有被...
本主题涉及的是在Java后台与前端JavaScript之间利用AES(Advanced Encryption Standard)进行加解密,以及前端的MD5(Message-Digest Algorithm 5)加密技术。以下是关于这些知识点的详细解释: 1. **AES加密**:...
下面我们将详细讨论如何在Java中使用MD5进行加密。 首先,你需要导入必要的Java安全库: ```java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; ``` 然后,你可以创建一个`...
在提供的压缩包文件“MD5”中,可能包含了一个Java程序示例,演示了如何使用MD5加密并生成32位小写的哈希值。这个程序可以作为一个基础模板,帮助开发者快速集成MD5功能到自己的项目中。 总之,MD5是一种便捷的哈希...
这个类可以实现,java语言下通过对上传文件进行MD5加密,然后将加密值与原来上传的文件加密值进行对比,防止上传重复文件。
以下是关于Java中使用MD5进行加密的详细介绍: 1. **MD5的特性** - **唯一性**:对于不同的输入,MD5会产生不同的摘要。 - **不可逆性**:由于MD5是单向的,无法从摘要中恢复原始数据。 - **抗碰撞**:虽然MD5...
md5加密java写法轻松实现md5让你学会加密,会的可以给点建议,不会的可以借鉴,大家讨论加密!很方便的使用!
总结,Java实现MD5加密算法主要是通过`java.security.MessageDigest`类,经过`getInstance("MD5")`获取MD5实例,然后使用`digest()`和`update()`方法处理数据,最终将二进制摘要转换为十六进制字符串。尽管MD5的安全...
java中常用的工具类,用于MD5的加密,里面还有切割了MD5加密的长度,有DES加密与解密,并且配有main函数可测试,可以根据自己的实际情况使用main函数测试使用
在Spring Boot中,我们可以使用`DigestUtils.md5DigestAsHex()`方法来对字符串进行MD5加密。这个方法接受一个字节数组作为参数,返回一个32位的小写十六进制字符串,代表了原始字符串的MD5哈希值。以下是一个简单的...