欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

用JAVA获取文件的MD5哈希码

发布时间:2024/1/1 36 豆豆
生活随笔 收集整理的这篇文章主要介绍了 用JAVA获取文件的MD5哈希码 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

获取文件的哈希码是一项常见的编程任务。MD5 是一种非常流行和常用的哈希算法。使用 Java 可以轻松获取文件的 MD5 哈希码,如下面的代码所示:

import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.security.MessageDigest;public class MD5file {public static String md5OfFile(File file) throws Exception {MessageDigest md = MessageDigest.getInstance("MD5");FileInputStream fs = new FileInputStream(file);BufferedInputStream bs = new BufferedInputStream(fs);byte[] buffer = new byte[1024];int bytesRead;while ((bytesRead = bs.read(buffer, 0, buffer.length)) != -1) {md.update(buffer, 0, bytesRead);}byte[] digest = md.digest();StringBuilder sb = new StringBuilder();for (byte bite : digest) {sb.append(String.format("%02x", bite & 0xff));}return sb.toString();}public static void main(String[] args) {File md5file = new File("f:\\Fedora-KDE-Live-x86_64-34-1.2.iso");try {String out = md5OfFile(md5file);System.out.println(out);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

上面的代码做了几件事:

  • 创建一个MessageDigest最终会创建 MD5 哈希码的对象
  • 使用FileInputStream和BufferedInputStream缓冲来自文件的输入
  • 每读取 1024 个字节更新MessageDigest对象update()
  • 使用digest()方法返回文件的MD5哈希码
  • 将此 MD5 哈希码转换为十六进制格式
import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException;public class MD5file2 {public static void main(String[] args) throws NoSuchAlgorithmException, IOException {File file = new File("f:\\Fedora-KDE-Live-x86_64-34-1.2.iso");MessageDigest md = MessageDigest.getInstance("MD5");FileInputStream fs = new FileInputStream(file);BufferedInputStream bs = new BufferedInputStream(fs);byte[] buffer = new byte[1024];int bytesRead;while ((bytesRead = bs.read(buffer, 0, buffer.length)) != -1) {md.update(buffer, 0, bytesRead);}byte[] digest = md.digest();StringBuilder sb = new StringBuilder();for (byte bite : digest) {sb.append(String.format("%02x", bite & 0xff));}System.out.println(sb.toString());}} import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException;public class MD5file3 {public static void main(String[] args) {File file = new File("f:\\Fedora-KDE-Live-x86_64-34-1.2.iso");MessageDigest md = null;try {md = MessageDigest.getInstance("MD5");} catch (NoSuchAlgorithmException e) {// TODO Auto-generated catch blocke.printStackTrace();}FileInputStream fs = null;try {fs = new FileInputStream(file);} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}BufferedInputStream bs = new BufferedInputStream(fs);byte[] buffer = new byte[1024];int bytesRead;try {while ((bytesRead = bs.read(buffer, 0, buffer.length)) != -1) {md.update(buffer, 0, bytesRead);}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}byte[] digest = md.digest();StringBuilder sb = new StringBuilder();for (byte bite : digest) {sb.append(String.format("%02x", bite & 0xff));}System.out.println(sb.toString());}}

总结

以上是生活随笔为你收集整理的用JAVA获取文件的MD5哈希码的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。