"Java 中文件的 MD5 和 SHA-1 的使用" Java 中提供了一个类 java.security.MessageDigest,該类是一种提供密码安全消息摘要如 SHA-1 和 MD5 功能的引擎类。该类可以用来计算文件的 MD5 和 SHA-1 值,不需要额外使用第三方组件,且支持超大文件。 在计算文件的 MD5 值时,需要使用 MessageDigest 类的 getInstance 静态方法来获取 MessageDigest 对象,并将参数设置为 "MD5"。然后,使用 FileInputStream 读取文件的内容,并将其传递给 MessageDigest 对象的 update 方法,以便计算文件的 MD5 值。使用 digest 方法获取计算结果,并将其转换为字符串形式。 以下是计算文件的 MD5 值的完整代码: ```java public static String getFileMD5(File file) { if (!file.isFile()) { return null; } MessageDigest digest = null; FileInputStream in = null; byte buffer[] = new byte[8192]; int len; try { digest = MessageDigest.getInstance("MD5"); in = new FileInputStream(file); while ((len = in.read(buffer)) != -1) { digest.update(buffer, 0, len); } BigInteger bigInt = new BigInteger(1, digest.digest()); return bigInt.toString(16); } catch (Exception e) { e.printStackTrace(); return null; } finally { try { in.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 在计算文件的 SHA-1 值时,需要使用 MessageDigest 类的 getInstance 静态方法来获取 MessageDigest 对象,并将参数设置为 "SHA-1"。其他代码部分与计算 MD5 值的代码相同。 以下是计算文件的 SHA-1 值的完整代码: ```java public static String getFileSha1(File file) { if (!file.isFile()) { return null; } MessageDigest digest = null; FileInputStream in = null; byte buffer[] = new byte[8192]; int len; try { digest = MessageDigest.getInstance("SHA-1"); in = new FileInputStream(file); while ((len = in.read(buffer)) != -1) { digest.update(buffer, 0, len); } BigInteger bigInt = new BigInteger(1, digest.digest()); return bigInt.toString(16); } catch (Exception e) { e.printStackTrace(); return null; } finally { try { in.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 在客户端代码中,可以使用上述方法来计算文件的 MD5 和 SHA-1 值。例如: ```java public static void main(String[] args) throws Exception { File file = new File("d:\\Media\\[beiwody.com]疯狂的蠢贼高清国语.rmvb"); InputStream in = new FileInputStream(file); System.out.println("文件大小:" + in.available() / 1024 / 1024 + " M"); in.close(); long time1 = System.currentTimeMillis(); System.out.println("MD5 为:" + MD5Util.getFileMD5(file)); long time2 = System.currentTimeMillis(); System.out.println("耗时 " + (time2 - time1) / 1000.00 + " 秒"); time1 = System.currentTimeMillis(); System.out.println("SHA-1 为:" + MD5Util.getFileSha1(file)); } ``` 在上述代码中,我们首先创建了一个文件对象,然后使用 FileInputStream 读取文件的内容,并计算文件的 MD5 和 SHA-1 值。我们打印出计算结果和耗时。 Java 中文件的 MD5 和 SHA-1 的使用可以使用 MessageDigest 类来实现,不需要额外使用第三方组件,且支持超大文件。
- 粉丝: 2
- 资源: 12
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- GEE错误集-Cannot add an object of type <Element> to the map. Might be fixable with an explicit .pdf
- 矩阵与线程的对应关系图
- 人体人员检测46-YOLO(v5至v9)、COCO、Darknet、TFRecord数据集合集.rar
- GEMM优化代码实现1
- 资料阅读器(先下载解压) 5.0.zip
- 人、垃圾、非垃圾检测18-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- java实现的冒泡排序 含代码说明和示例.docx
- 440379878861684smart-parking.zip
- 金智维RPA server安装包
- 二维码图形检测6-YOLO(v5至v9)、COCO、CreateML、Darknet、Paligemma、TFRecord数据集合集.rar