【加密解密】加解密技术之 MD5
来源:互联网 发布:淘宝骚扰买家处罚 编辑:程序博客网 时间:2024/04/29 21:19
MD5,全称为“Message Digest Algorithm 5”,中文名“消息摘要算法第五版”,它是计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。严格来说,它是一种摘要算法,是确保信息完整性的。不过,在某种意义上来说,也可以算作一种加密算法。
MD5 算法具有很多特点:
- 压缩性:任意长度的数据,算出的MD5值长度都是固定的。
- 容易计算:从原数据计算出MD5值很容易。
- 抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
- 弱抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
- 强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。
适用范围:MD5更多用于校验信息的完整性,即一致性校验 ,常常会以 "密码+明文" 方式进行
代码(java示例):
MD5相关的类:java.security 类 MessageDigest
例子1:字符串加密:
调用函数:
String str="0123456789"
System.out.println(EncoderByMd5(str));
输出:eB5eJF1ptWaXm4bijSPyxw==
/** *//**利用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;
}
* @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==
例子2:
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class EncrypMD5 {
public byte[] eccrypt(String info) throws NoSuchAlgorithmException{
//根据MD5算法生成MessageDigest对象
MessageDigest md5 = MessageDigest.getInstance("MD5");
byte[] srcBytes = info.getBytes();
//使用srcBytes更新摘要
md5.update(srcBytes);
//完成哈希计算,得到result
byte[] resultBytes = md5.digest();
return resultBytes;
}
public static void main(String args[]) throws NoSuchAlgorithmException{
String msg = "加密算法";
EncrypMD5 md5 = new EncrypMD5();
byte[] resultBytes = md5.eccrypt(msg);
System.out.println("密文是:" + new String(resultBytes));
System.out.println("明文是:" + msg);
}
}
import java.security.NoSuchAlgorithmException;
public class EncrypMD5 {
public byte[] eccrypt(String info) throws NoSuchAlgorithmException{
//根据MD5算法生成MessageDigest对象
MessageDigest md5 = MessageDigest.getInstance("MD5");
byte[] srcBytes = info.getBytes();
//使用srcBytes更新摘要
md5.update(srcBytes);
//完成哈希计算,得到result
byte[] resultBytes = md5.digest();
return resultBytes;
}
public static void main(String args[]) throws NoSuchAlgorithmException{
String msg = "加密算法";
EncrypMD5 md5 = new EncrypMD5();
byte[] resultBytes = md5.eccrypt(msg);
System.out.println("密文是:" + new String(resultBytes));
System.out.println("明文是:" + msg);
}
}
参考文章:
http://blog.csdn.net/flashlm/article/details/1667517
http://blog.csdn.net/happylee6688/article/details/43953671
0 0
- 【加密解密】加解密技术之 MD5
- Java 加解密技术系列之 MD5
- Java 加解密技术之 MD5
- Java 加解密技术系列之 MD5
- Java 加解密技术系列之 MD5
- Java加密解密技术系列之MD5
- MD5加密、DES加解密、RSA加解密
- Java 加密解密技术之MD5&SHA学习
- 加密解密-换位加解密
- 加密解密-替换加解密
- MD5加解密
- MD5加解密
- C# MD5加解密
- MD5加解密
- md5加解密原理
- MD5加解密
- c# md5 加解密
- MD5加解密
- java for openstack
- jquery mobile 入门2 (组件2)
- Calculate Mysql Memory Usage – Quick Stored Procedure
- IO多路复用之poll总结
- POJ 1019Number Sequence(DP?)
- 【加密解密】加解密技术之 MD5
- SpringMVC中Session超时拦截器配置
- 【笔记】二分图、网络流相关
- 图示7大常见排序算法
- struts2学习笔记---------自定义类型转换器
- 关于Java scheduledExecutor
- IO多路复用之epoll总结
- web项目中servlet与servlet-mapping
- Android Binder (6): App启动时binder做什么?