【加密解密】加解密技术之 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:字符串加密:
/** *//**利用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




0 0
原创粉丝点击