日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用JAVA获取文件的MD5哈希码

發(fā)布時(shí)間:2024/1/1 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用JAVA获取文件的MD5哈希码 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

獲取文件的哈希碼是一項(xiàng)常見的編程任務(wù)。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();}}}

上面的代碼做了幾件事:

  • 創(chuàng)建一個(gè)MessageDigest最終會(huì)創(chuàng)建 MD5 哈希碼的對象
  • 使用FileInputStream和BufferedInputStream緩沖來自文件的輸入
  • 每讀取 1024 個(gè)字節(jié)更新MessageDigest對象update()
  • 使用digest()方法返回文件的MD5哈希碼
  • 將此 MD5 哈希碼轉(zhuǎn)換為十六進(jìn)制格式
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());}}

總結(jié)

以上是生活随笔為你收集整理的用JAVA获取文件的MD5哈希码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。