您的位置:首页 > 编程语言 > Java开发

【Java】加解密技术之 MD5

2016-03-07 10:21 411 查看
MD5,全称为“Message Digest Algorithm 5”,中文名“消息摘要算法第五版”,它是计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。严格来说,它是一种摘要算法,是确保信息完整性的。不过,在某种意义上来说,也可以算作一种加密算法。

MD5 算法具有很多特点:

压缩性:任意长度的数据,算出的MD5值长度都是固定的。
容易计算:从原数据计算出MD5值很容易。
抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
弱抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。

适用范围:MD5更多用于校验信息的完整性,即一致性校验 ,常常会以 "密码+明文" 方式进行

代码(java示例):
MD5相关的类:java.security 类 MessageDigest

例子1:字符串加密:


/** *//**利用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==

例子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);

}

}

参考文章: http://blog.csdn.net/flashlm/article/details/1667517 http://blog.csdn.net/happylee6688/article/details/43953671
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: