灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2819回复:0

Java MD5加密算法学习

楼主#
更多 发布于:2013-07-08 13:13
 MD5,即"Message-Digest Algorithm 5(信息-摘要算法)",它由MD2、MD3、MD4发展而来的一种单向函数算法(也就是HASH算法),它是国际著名的公钥加密算法标准RSA的第一设计者R.Rivest于上个世纪90年代初开发出来的。MD5的最大作用在于,将不同格式的大容量文件信息在用数字签名软件来签署私人密钥前"压缩"成一种保密的格式,关键之处在于这种"压缩"是不可逆的。


     javaDemo:Md5Demo.java

 

package com.zsl.algorithm;  
  
import java.security.MessageDigest;  
import java.security.NoSuchAlgorithmException;  
  
public class Md5Demo {  
    /**
     *  
     * @param s:要进行加密的字符串
     * @return  字符串的md5值
     */  
    public static String getMd5(String s) {  
        char hexChar[] = {'0', '1', '2', '3', '4', '5', '6',  
                '7', '8' , '9', 'a', 'b', 'c', 'd', 'e', 'f'};  
        //md5加密算法的加密对象为字符数组,这里是为了得到加密的对象  
        byte[] b = s.getBytes();  
        try {  
            MessageDigest md = MessageDigest.getInstance("MD5");  
            md.update(b);  
            byte[] b2 = md.digest();// 进行加密并返回字符数组  
            char str[] = new char[b2.length << 1];  
            int len = 0;  
            //将字符数组转换成十六进制串,形成最终的密文  
            for (int i = 0; i < b2.length; i++) {  
                byte val = b2;  
                str[len++] = hexChar[(val >>> 4) & 0xf];  
                str[len++] = hexChar[val & 0xf];  
            }  
            return new String(str);  
        } catch (NoSuchAlgorithmException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
        return null;  
    }  
  
    public static void main(String[] args) {  
        String res = getMd5("20130702");  
        System.out.println(res + "|size = " + res.length());  
    }  
}

喜欢0 评分0
游客

返回顶部