java 代码
- import java.io.FileInputStream;
- import java.security.MessageDigest;
- /**
- *
- * @author: fanzhi_kong
- * @version MD5Demo V1.0
- * @date: 2007 May 31, 2007 10:10:35 AM
- *
- */
- public class MD5 {
- static char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
- 'a', 'b', 'c', 'd', 'e', 'f' };
- /**生成字符串的MD5码
- *
- * @param s
- * @return
- */
- public final static String getMD5(String s) {
- try {
- byte[] strTemp = s.getBytes();
- MessageDigest md = MessageDigest.getInstance("MD5");
- md.update(strTemp);
- return digest(md);
- } catch (Exception e) {
- System.out.println("Error:"+e.getMessage());
- return null;
- }
- }
- /**生成文件的MD5
- *
- * @param path 文件完整路径
- * @return
- */
- public final static String getMD5File(String path) {
- try {
- MessageDigest mDigest = MessageDigest.getInstance("MD5");
- // 读取文件
- final int SIZE = 1024;
- FileInputStream in = new FileInputStream(path);
- byte[] buff = new byte[SIZE];
- int len;
- while ((len = in.read(buff)) != -1) {
- mDigest.update(buff, 0, len);
- }
- in.close();
- return digest(mDigest);
- } catch (Exception e) {
- System.out.println("error:"+e.getMessage());
- return null;
- }
- }
- /**计算摘要
- *
- * @param mDigest
- * @return
- */
- private static String digest(MessageDigest mDigest) {
- byte[] md = mDigest.digest();
- int j = md.length;
- char str[] = new char[j * 2];
- int k = 0;
- for (int i = 0; i < j; i++) {
- byte byte0 = md[i];
- str[k++] = hexDigits[byte0 >>> 4 & 0xf];
- str[k++] = hexDigits[byte0 & 0xf];
- }
- return new String(str);
- }
- /**
- * @param args
- */
- public static void main(String[] args) {
- // System.out.println(MD5.getMD5("astro123456"));
- // System.out.println(MD5.getMD5("123456"));
- String path = "C:/tdemo.log";
- String path1 = "C:/tdemo1.log";
- String path2 = "C:/ftpupload/越狱111.rmvb";
- System.out.println(MD5.getMD5File(path));
- System.out.println(MD5.getMD5File(path1));
- long beginTime = System.currentTimeMillis();
- System.out.println(MD5.getMD5File(path2));
- long endTime = System.currentTimeMillis() - beginTime;
- System.out.println("计算时间为:" + endTime / 1000 + " s");
- }
- }