MD5简介以及java代码实现

来源:互联网 发布:知乎Nba力量 编辑:程序博客网 时间:2024/05/10 06:37
MD5简介:
 MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。
 MD5算法的特点:
压缩性:任意长度的数据,算出MD5值长度都是固定的;
容易计算:从原数据计算出MD5值很容易;
抗修改性:对原数据进行任何改动,哪怕只修改一个字节,所得到的MD5值都有很大的区别;
强抗碰撞:想得到两个具有相同MD5值得数据是非常困难的;
不可逆性:MD5加密是不可逆的,一个字符串对应唯一的MD5值,但一个MD5值对应多个字符串;

MD5的应用:
一致性校验:对一段信息产生信息摘要,以防止被篡改。用于下载文件完整性的校验。
数字签名:对一段Message产生fingerprint(指纹),以防止被篡改。
安全访问认证:操作系统的登陆验证以及各类网站、系统的登陆验证。

MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。


MD5的java实现:
package zjm.md5.test;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;public class MD5_Verify {//得到32位的加密结果public static String encrypt(String str){MessageDigest md;try {md = MessageDigest.getInstance("MD5");byte[] str_byte = str.getBytes(); byte[] md5_result_byte = md.digest(str_byte);//System.out.println(md5_result_byte);//System.out.println("字节数组的长度是:"+md5_result_byte.length);String md5_result = bytesToHex(md5_result_byte);return md5_result;} catch (NoSuchAlgorithmException e) {e.printStackTrace();return null;}}//将字节数组转化为16进制字符串public static String bytesToHex(byte[] bytes) {StringBuffer md5str = new StringBuffer();//把数组每一字节换成16进制连成md5字符串int digital;for (int i = 0; i < bytes.length; i++) { System.out.println(",   "+bytes[i]); digital = bytes[i];if(digital < 0) {  //16及以上的数转16进制是两位digital += 256;}if(digital < 16){md5str.append("0");//如果是0~16之间的数的话则变成0X}md5str.append(Integer.toHexString(digital));}return md5str.toString().toUpperCase();}public static void main(String[] args) {String str = "123";if(encrypt(str)!=null){String result = encrypt(str);System.out.println("加密结果为"+result);}}}

0 0
原创粉丝点击