Java计算文件的SHA码和MD5码

本文提供了一种计算文件MD5和SHA哈希值的方法,通过使用MessageDigest类和字节流来逐步读取并更新文件的哈希值,确保了文件完整性的校验。
复制代码
 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/p/5760360.html,如需转载请自行联系原作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值