- 浏览: 406876 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (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 992为了开发方便,经常复制项目,但是又不能发布 :: 解决:项目 ... -
final关键字
2010-06-15 15:23 846Java的关键字final的含义存在着细微的区别,但通常它指的 ... -
static相关的内容(静态类、方法、变量、域,以及非静态的 学习
2010-06-15 15:06 1144static解析 http://www.iteye.com/ ... -
dom4j 完成学生的CRUD (转)
2010-06-15 14:07 1089dom4j是一种解析XML文档的开放源代码XML框架,本文就来 ... -
Java中重载与重写的区别
2010-06-15 14:03 1523Java中重载与重写的区别 ... -
Request对象的所有的方法
2010-06-15 12:45 1440Request对象的主要方法: setAttribute(S ... -
优化myeclipse的速度
2010-05-31 15:45 7061、去除不需要加载的模块 一个系统20%的功能往往能够满足8 ... -
MyEclipse 6.X集成svn的方式有两种
2010-05-31 15:37 1051在这里添加日志标题MyEclipse 6.X集成svn的方式基 ... -
Class bytes found but defineClass()failed for: 错误解决
2010-05-31 15:36 4033JDK 的版本不兼容 检查一下你编译环境的JDK版本和在容 ... -
计算两个日期之间相差的天数
2010-04-01 15:36 1845程序经过一系列处理,得到两个string类型的时间值,一个值的 ... -
java List分组和排序处理 Map 应用
2010-03-19 16:27 6503package com.common.main.mapAn ... -
Java正则表达式详解
2010-03-19 15:16 783覺得不錯收藏一下: http://blog.csdn.net/ ... -
Java如何遍历Map的所有的元素
2010-03-19 15:13 780JDK1.4中 Map map = new HashMap( ... -
Java线程之线程同步
2010-02-08 23:01 981注:wait notify 都是Object的方法 同步(阻塞 ... -
使用javamail发信过程中的一些问题及解决方法(转)
2010-01-25 14:03 1135今天在弄javamail 发现下面这篇不错,转过来!! 使用j ... -
java 中发送邮件内容的各种基本生成方式
2010-01-25 13:56 2404/*通过JAVAMail发送邮件步骤: 1 构建Sessi ... -
Java加密和数字签名编程快速入门(转)
2010-01-21 13:36 1053最近在看加密的东东,觉得这个挺不错。转来学习~ ~ Java加 ... -
java的MD5加密、解密
2010-01-21 13:03 46304简单demo: import java.security.*; ... -
Java面试中遇到的一些经典算法题目
2009-12-07 22:44 9041.写一个方法,用一个for循环打印九九乘法表 Java代 ... -
System.exit(-1)和return 的区别
2009-11-10 16:21 1521对于只有一个单一方法的类或者系统来说是一样的,但是对于含有多个 ...
相关推荐
Java实现MD5加密以及解密,附带测试类,具体见代码。 Java实现MD5加密以及解密,附带测试类,具体见代码。 Java实现MD5加密以及解密,附带测试类,具体见代码。 Java实现MD5加密以及解密,附带测试类,具体见代码。
java中的MD532位加密。将java类放入项目中,使用encrypByMd5静态方法即可生成hex_md5 32位加密的字符串。
Java中实现Md5(32位)加密,此资源下载后可直接在程序中使用
java与c#MD5加密方法得到不一致解决办法,MD5加密后得到不一致结果
java实现md5 加密解密(在网络中MD5是著名的不可逆算法,但是如果知道MD5的加密的字符串 则可以通过自己的加密算法对明文进行加密,对加密后的密文与字符串匹配; 匹配成功,表示找到明文;但是此程序的时间耗费较高!仅...
JAVA_对文件MD5加密,附有代码实例,加密解密方法
这个类可以实现,java语言下通过对上传文件进行MD5加密,然后将加密值与原来上传的文件加密值进行对比,防止上传重复文件。
md5加密java写法轻松实现md5让你学会加密,会的可以给点建议,不会的可以借鉴,大家讨论加密!很方便的使用!
java中常用的工具类,用于MD5的加密,里面还有切割了MD5加密的长度,有DES加密与解密,并且配有main函数可测试,可以根据自己的实际情况使用main函数测试使用
java 采用MD5 加密密码 的方法
纯JAVA的MD5加密,利用MD5单向函数产生密钥,方便测试
对接接口时用到的一种常用加密算法,常用于验证签名,使用shiro-all-1.4.1.jar,可自行下载
解决Delphi 中文MD5签名和Java MD5签名不一致的问题。
java中使用MD5加密算法进行加密.pdf
java中的md5加密函数,已经封装成类和函数了,非常好用。
AES使用java和js互相加解密及前端MD5加密,java后台加密前端js解密,或前端js加密,后端java解密,
java中关于Springboot加密 md5加密,注册密码加密到数据库中的关键语句,md5加密语句
现在项目中,有很多基于安全的考虑,所以学习关于加密的知识已显得很重要啦,先上传一小例子,希望对大家有所帮助....
java写的MD5加密程序,具有短小的特点