Java MD5加密,Java 计算文件MD5值

[本类为java MD5工具类]

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.Serializable;
import java.math.BigInteger;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.security.MessageDigest;

/**
 * MD5加密运算类
 * 
 * @author LXQ
 * @version 1.0 2014-4-14
 */
public class SECURITY_MD5 {
	/**
	 * 加密一个输入字符串
	 * 
	 * @param visibleString
	 *            输入一个可见的明码<br>
	 *            类型:java.lang.String
	 * @return 一个加密后的MD5值<br>
	 *         通常用于密码加密
	 */
	public static String getEnMD5String(String visibleString) {
		MessageDigest md5;
		try {
			// 生成一个MD5加密计算摘要
			md5 = MessageDigest.getInstance("MD5");
			// 计算md5函数
			md5.update(visibleString.getBytes());
			// digest()最后确定返回md5 hash值,返回值为8为字符串。因为md5 hash值是16位的hex值,实际上就是8位的字符
			// BigInteger函数则将8位的字符串转换成16位hex值,用字符串来表示;得到字符串形式的 值
			String pwd = new BigInteger(1, md5.digest()).toString(16);
			return pwd;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return visibleString;
	}

	/**
	 * 计算文件MD5值
	 * 
	 * @param file
	 *            输入一个文件参数<br>
	 *            类型:java.io.File
	 * @return 该文件的MD5值<br>
	 *         类型:java.lang.String
	 */
	public static String getMd5ForFile(File file) {
		String value = null;
		FileInputStream in = null;
		try {
			in = new FileInputStream(file);
			MappedByteBuffer byteBuffer = in.getChannel().map(
					FileChannel.MapMode.READ_ONLY, 0, file.length());
			MessageDigest md5 = MessageDigest.getInstance("MD5");
			md5.update(byteBuffer);
			BigInteger bi = new BigInteger(1, md5.digest());
			value = bi.toString(16);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (null != in) {
				try {
					in.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		return value;
	}
}

 

 

欢迎分享本文,转载请注明出处,本文出处:竹林教程 点击复制
arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()