当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

MD5工具类

发表于: 2011-08-03   作者:bsr1983   来源:转载   浏览次数:
MD5
摘要: import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmE

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * 创建日期:Feb 24, 2011
 * Title:
 * Description:对本文件的详细描述,原则上不能少于50字
 * @author 
 * @mender:(文件的修改者,文件创建者之外的人)
 * @version 1.0
 * Remark:认为有必要的其他信息
 */

public class MD5Util 
{
	/**
	 * 
	 * 功能:获取指定路径下的文件的filePath
	 * 作者: 
	 * 创建日期:Feb 24, 2011
	 * 修改者: mender
	 * 修改日期: modifydate
	 * @param filePath
	 * @return
	 */
	public static String getFileMD5(String filePath)
	{
		String strMd5="";
		if(filePath!=null&&filePath.length()>0)
		{
			File file=new File(filePath);
			if(file!=null&&file.isFile())
			{
				return getFileMD5(file);
			}
			else
			{
				System.err.println("指定路径下的文件不存在,或指定的路径指向的是一个目录!");
			}
		}
		return strMd5;
	}
	/**
	 * 
	 * 功能:获取指定的File对象的MD5值
	 * 作者: 
	 * 创建日期:Feb 24, 2011
	 * 修改者: mender
	 * 修改日期: modifydate
	 * @param file
	 * @return
	 */
	public static String getFileMD5(File file)
	{
		String strMd5="";
		File fileToCalaulate=file;
		if(fileToCalaulate!=null)
		{
			try {
				FileInputStream fis=new FileInputStream(fileToCalaulate);
				MessageDigest md5 = MessageDigest.getInstance("MD5");
				byte bufferArray[]=new byte[10240];
				if(fis!=null)
				{
					int byteLength=fis.read(bufferArray);
					while(byteLength!=-1)
					{
						md5.update(bufferArray,0,byteLength);
						byteLength=fis.read(bufferArray);
					}
					byte md5ByteArray[]=md5.digest();
					strMd5=byteArrayToHexString(md5ByteArray);
				}
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (NoSuchAlgorithmException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return strMd5;
	}
	/**
	 * 
	 * 功能:
	 * 作者: 
	 * 创建日期:Feb 24, 2011
	 * 修改者: mender
	 * 修改日期: modifydate
	 * @param bArray
	 * @return
	 */
	public static String byteArrayToHexString(byte[] bArray)
	{
		String hexString=null;
		/**
		 * 表示16进制的字符
		 */
		char hexChar[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
		byte byteArray[]=bArray;
		/**
		 * 用于标示MD5的字符数组
		 */
		char md5Char[]=new char[32];
		int j=0;
		if(byteArray!=null&&byteArray.length>0)
		{
			for(int i=0;i<byteArray.length;i++)
			{
				byte tmpByte=byteArray[i];
				int heightIndex=tmpByte>>>4&0xf;//取该字节的高4位,获取其16进制值
				int lowIndex=tmpByte&0xf;//取该字节的低4位,获取其16进制值
				md5Char[j++]=hexChar[heightIndex];
				md5Char[j++]=hexChar[lowIndex];
			}
			hexString=new String(md5Char);
		}
		return hexString;
	}
	/**
	 * 
	 * 功能:利用JDK5.0里提供的String.fromat函数对字节数组进行格式化,将其转换为16进制的字符串
	 * 作者: 
	 * 创建日期:Feb 24, 2011
	 * 修改者: mender
	 * 修改日期: modifydate
	 * @param bArray
	 * @return
	 */
	public static String formatByteArrayToHexString(byte[] bArray)
	{
		byte byteArray[]=bArray;
		StringBuffer strBuffer=new StringBuffer();
		if(byteArray!=null&&byteArray.length>0)
		{
			for(int i=0;i<byteArray.length;i++)
			{
				strBuffer.append(String.format("%X", byteArray[i]));
			}
		}
		return strBuffer.toString();
	}
	
}
 

MD5工具类

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
工具支持0~16位的数字 查询一个9位数的MD5加密内容大概耗时30分钟~几个小时 只用了一个线程,还有就
本章目标 掌握Collections与Collection接口的区别 掌握Collections类中提供的主要操作方法 Collecti
导出为EXCEL文件并下载 使用ExcelUtil.writeToExcel(ExcelUtil.listToWorkbook(rows, ExcelType.xls
java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的。静态方法是属于类的,不是属于
Flex StringUtil工具类 最近发现Flex处理字符串的工具类一共有三个,分别是: mx.utils包下的String
早在2008年三年就发布了一个对象池工具类,允许你在集合中放置对象,在需要时再用,众所周知Flex的
1.掌握Collections 与 Collection 接口的区别 2.掌握Collections 类中提供的主要操作方法 在面试题
导出为EXCEL文件并下载 使用ExcelUtil.writeToExcel(ExcelUtil.listToWorkbook(rows, ExcelType.xls
10年工作经验老程序员推荐的7个开发类工具 做.NET软件工作已经10年了,从程序员做到高级程序员,再
Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动。下面是我
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号