Java、PHP 文件MD5、Sha1

yzmm
837 阅读
加密的其实并不是一个文件而是文件的内容(FileInputStream),加密的其实是一个流(InputStream)。java.security 中的MessageDigest已经自带了一些基础的算法。PHP就更简单了,官方默认提供了md5_file和sha1_file函数。

test.php

<?php 
	echo md5_file("/Users/yz/bdlogo.gif")."\r\n";
	echo sha1_file("/Users/yz/bdlogo.gif")."\r\n";
?>

MD5FileUtil.java

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.math.BigInteger;
import java.security.MessageDigest;
public class MD5FileUtil {
	/**
	 * 获取文件MD5值
	 * @param file
	 * @return
	 */
	public static String getFileMD5(File file) {
		if (!file.isFile()) {
			return null;
		}
		try {
			return getInputStreamMD5(new FileInputStream(file));
		} catch (FileNotFoundException e) {
		}
		return null;
	}
	/**
	 * 获取输入流的MD5值
	 * @param is
	 * @return
	 */
	public static String getInputStreamMD5(InputStream is) {
		if (is == null) {
			return null;
		}
		MessageDigest digest = null;
		byte buffer[] = new byte[8192];
		int len;
		try {
			digest = MessageDigest.getInstance("MD5");
			while ((len = is.read(buffer)) != -1) {
				digest.update(buffer, 0, len);
			}
			BigInteger bigInt = new BigInteger(1, digest.digest());
			return bigInt.toString(16);
		} catch (Exception e) {
			ClientLogger.clog(e);
			return null;
		} finally {
			try {
				is.close();
			} catch (Exception e) {
				ClientLogger.clog(e);
			}
		}
	}
	public static String getFileSha1(File file) {
		if (!file.isFile()) {
			return null;
		}
		try {
			return getInputStreamSha1(new FileInputStream(file));
		} catch (FileNotFoundException e) {
		}
		return null;
	}
	public static String getInputStreamSha1(InputStream is) {
		MessageDigest digest = null;
		byte buffer[] = new byte[8192];
		int len;
		try {
			digest = MessageDigest.getInstance("SHA-1");
			while ((len = is.read(buffer)) != -1) {
				digest.update(buffer, 0, len);
			}
			BigInteger bigInt = new BigInteger(1, digest.digest());
			return bigInt.toString(16);
		} catch (Exception e) {
			ClientLogger.clog(e);
			return null;
		} finally {
			try {
				is.close();
			} catch (Exception e) {
				ClientLogger.clog(e);
			}
		}
	}
}

评论 (0)

发表评论