MD5加密,并转换为16进制

背景:在做爬虫的URL处理专题中需要对URL进行处理再存储。

要求: Java 中对数据进行MD5加密,并转换为16进制,以字符串的形式输出

(1)      在Java中,java的java.security.MessageDigest已经定义了MD5的计算,得到的结果是128位整数。

(2)      将此128位转换为十六进制以字符串的形式输出

下面直接来代码

import java.security.NoSuchAlgorithmException;

public class MD5 {
	
	/**
	 * 将source进行md加密,结果是128位二进制数。
	 * 将结果进行采用十六进制转换输出字符串
	 * */
	public static String getMD5(byte[] source){
		String result=null;
		char hexDigits[]={ '0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
		try {
			java.security.MessageDigest md=java.security.MessageDigest.getInstance("MD5");
			md.update(source);      //更新摘要
			byte tmp[]=md.digest(); //进行md5计算
            char str[] =new char[ 16*2 ]; //md的结果是128位的长整数,用16进制表示的话就是32位,即32个字符表示
            
            int k = 0;
            for( int i=0 ; i<16; i++){
            	byte byte0 =tmp[i];
            	str[k++] = hexDigits[ byte0 >>> 4 & 0xf];//低四位与1111做逻辑与运算 得到16进制数存入低位
            	str[k++] = hexDigits[ byte0 & 0xf];     //高四位与1111做逻辑与运算得到16进制存入高位
            }
            result = new String (str);		
			
		} catch (NoSuchAlgorithmException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}		
		return result;

	}
}

你可能感兴趣的:(MD5加密,并转换为16进制)