Java计算文件的SHA码和MD5码
可参考:http://blog.csdn.net/hudashi/article/details/8394158
1 /** 2 * 计算文件的MD5码 3 * @param file 4 * @return 5 */ 6 public static String getMD5(File file) { 7 FileInputStream fis = null; 8 try { 9 MessageDigest md = MessageDigest.getInstance("MD5"); 10 fis = new FileInputStream(file); 11 byte[] buffer = new byte[8192]; 12 int length = -1; 13 System.out.println("开始算"); 14 while ((length = fis.read(buffer)) != -1) { 15 md.update(buffer, 0, length); 16 } 17 System.out.println("算完了"); 18 return bytesToString(md.digest()); 19 } catch (IOException ex) { 20 Logger.getLogger(MD5Util.class.getName()).log(Level.SEVERE, null, ex); 21 return null; 22 } catch (NoSuchAlgorithmException ex) { 23 Logger.getLogger(MD5Util.class.getName()).log(Level.SEVERE, null, ex); 24 return null; 25 } finally { 26 try { 27 fis.close(); 28 } catch (IOException ex) { 29 Logger.getLogger(MD5Util.class.getName()).log(Level.SEVERE, null, ex); 30 } 31 } 32 } 33 34 /** 35 * 得到文件的SHA码,用于校验 36 * @param file 37 * @return 38 */ 39 public static String getSHA(File file) { 40 FileInputStream fis = null; 41 try { 42 MessageDigest md = MessageDigest.getInstance("SHA"); 43 fis = new FileInputStream(file); 44 byte[] buffer = new byte[8192]; 45 int length = -1; 46 System.out.println("开始算"); 47 while ((length = fis.read(buffer)) != -1) { 48 md.update(buffer, 0, length); 49 } 50 System.out.println("算完了"); 51 return bytesToString(md.digest()); 52 } catch (IOException ex) { 53 Logger.getLogger(MD5Util.class.getName()).log(Level.SEVERE, null, ex); 54 return null; 55 } catch (NoSuchAlgorithmException ex) { 56 Logger.getLogger(MD5Util.class.getName()).log(Level.SEVERE, null, ex); 57 return null; 58 } finally { 59 try { 60 fis.close(); 61 } catch (IOException ex) { 62 Logger.getLogger(MD5Util.class.getName()).log(Level.SEVERE, null, ex); 63 } 64 } 65 } 66
作者:SummerChill 出处:http://www.cnblogs.com/DreamDrive/ 本博客为自己总结亦或在网上发现的技术博文的转载。 如果文中有什么错误,欢迎指出。以免更多的人被误导。 |