MD5信息摘要

java 代码
  1. import java.io.FileInputStream;   
  2. import java.security.MessageDigest;   
  3.   
  4.     
  5. /**  
  6.  *   
  7.  * @author: fanzhi_kong  
  8.  * @version MD5Demo V1.0  
  9.  * @date:  2007 May 31, 2007 10:10:35 AM  
  10.  *  
  11.  */  
  12. public class MD5 {   
  13.        
  14.     static char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',   
  15.             'a', 'b', 'c', 'd', 'e', 'f' };   
  16.   
  17.     /**生成字符串的MD5码  
  18.      *   
  19.      * @param s  
  20.      * @return  
  21.      */  
  22.     public final static String getMD5(String s) {   
  23.         try {   
  24.             byte[] strTemp = s.getBytes();   
  25.             MessageDigest md = MessageDigest.getInstance("MD5");   
  26.   
  27.             md.update(strTemp);   
  28.             return digest(md);   
  29.         } catch (Exception e) {   
  30.             System.out.println("Error:"+e.getMessage());   
  31.             return null;   
  32.         }   
  33.     }   
  34.   
  35.        
  36.   
  37.     /**生成文件的MD5  
  38.      *   
  39.      * @param path 文件完整路径  
  40.      * @return  
  41.      */  
  42.     public final static String getMD5File(String path) {   
  43.         try {   
  44.             MessageDigest mDigest = MessageDigest.getInstance("MD5");   
  45.   
  46.             // 读取文件   
  47.             final int SIZE = 1024;   
  48.             FileInputStream in = new FileInputStream(path);   
  49.             byte[] buff = new byte[SIZE];   
  50.             int len;   
  51.             while ((len = in.read(buff)) != -1) {   
  52.                 mDigest.update(buff, 0, len);   
  53.             }   
  54.             in.close();   
  55.             return digest(mDigest);   
  56.   
  57.         } catch (Exception e) {   
  58.             System.out.println("error:"+e.getMessage());   
  59.             return null;   
  60.         }   
  61.   
  62.     }   
  63.        
  64.        
  65.     /**计算摘要  
  66.      *   
  67.      * @param mDigest  
  68.      * @return  
  69.      */  
  70.     private static String digest(MessageDigest mDigest) {   
  71.         byte[] md = mDigest.digest();   
  72.         int j = md.length;   
  73.         char str[] = new char[j * 2];   
  74.         int k = 0;   
  75.         for (int i = 0; i < j; i++) {   
  76.             byte byte0 = md[i];   
  77.             str[k++] = hexDigits[byte0 >>> 4 & 0xf];   
  78.             str[k++] = hexDigits[byte0 & 0xf];   
  79.         }   
  80.         return new String(str);   
  81.     }   
  82.   
  83.     /**  
  84.      * @param args  
  85.      */  
  86.     public static void main(String[] args) {   
  87.         // System.out.println(MD5.getMD5("astro123456"));   
  88.         // System.out.println(MD5.getMD5("123456"));   
  89.   
  90.         String path = "C:/tdemo.log";   
  91.         String path1 = "C:/tdemo1.log";   
  92.         String path2 = "C:/ftpupload/越狱111.rmvb";   
  93.          System.out.println(MD5.getMD5File(path));   
  94.           System.out.println(MD5.getMD5File(path1));   
  95.         long beginTime = System.currentTimeMillis();   
  96.         System.out.println(MD5.getMD5File(path2));   
  97.         long endTime = System.currentTimeMillis() - beginTime;   
  98.         System.out.println("计算时间为:" + endTime / 1000 + " s");   
  99.   
  100.     }   
  101.   
  102. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值