激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|

服務(wù)器之家 - 編程語(yǔ)言 - JAVA教程 - Java 獲得文件的指紋

Java 獲得文件的指紋

2020-10-28 22:01今日頭條松鼠工廠 JAVA教程

在文件上傳到服務(wù)器的時(shí)候,我們希望能夠獲得文件的指紋以確定文件沒有被篡改過。常用的算法最開始使用的是 MD5,隨后隨著技術(shù)的發(fā)展,MD5 算法已經(jīng)被確定是不安全的了。

在文件上傳到服務(wù)器的時(shí)候,我們希望能夠獲得文件的指紋以確定文件沒有被篡改過。

常用的算法最開始使用的是 MD5,隨后隨著技術(shù)的發(fā)展,MD5 算法已經(jīng)被確定是不安全的了。

目前可能使用更多的是 HSA3_256 哈希算法

哈希算法通常有以下幾個(gè)特點(diǎn):

  • 正像快速:原始數(shù)據(jù)可以快速計(jì)算出哈希值
  • 逆向困難:通過哈希值基本不可能推導(dǎo)出原始數(shù)據(jù)
  • 輸入敏感:原始數(shù)據(jù)只要有一點(diǎn)變動(dòng),得到的哈希值差別很大
  • 沖突避免:很難找到不同的原始數(shù)據(jù)得到相同的哈希值

哈希算法主要有MD4、MD5、SHA。

  • MD4 1990年 輸出128位 (已經(jīng)不安全)
  • MD5 1991年 輸出128位 (已經(jīng)不安全)
  • SHA-0 1993年 輸出160位 (發(fā)布之后很快就被NSA撤回,是SHA-1的前身)
  • SHA-1 1995年 輸出160位 (已經(jīng)不安全)
  • SHA-2包括SHA-224、SHA-256、SHA-384,和 SHA-512,分別輸出224、256、384、512位。 (目前安全)

Java 中,可以使用 Apache 提供的 Apache Commons Codec,非常容易的獲得文件的哈希字符串指紋。

方法也非常簡(jiǎn)單,第一步就是需要將文件讀取為 InputStream。

如果自己寫的話,可能這一步有點(diǎn)代碼。

你可以使用 Apache 提供的

FileUtils.openInputStream 

就可以直接將文件讀取為 InputStream 了。

考察下面的代碼:

InputStream is = FileUtils.openInputStream(new  

File(SCOConstants.PATH_DATA_EXCHANGE + "Estimated vs Original Manual 

 (JIRA) 10-23-20.csv")); 

MD5 哈希

Java 獲得文件的指紋

在文件讀取后,你只需要使用 Apache Commons Codec 提供的 DigestUtils 方法就可以了。

/** 

  * Test to get file's MD5 Hash 

  * 

  * @throws Exception 

  */ 

 @Test 

 public void fileMD5Test() throws Exception { 

 

     String md5 = StringUtils.EMPTY; 

 

     try { 

         InputStream is = FileUtils.openInputStream(new File(SCOConstants.PATH_DATA_EXCHANGE + "Estimated vs Original Manual (JIRA) 10-23-20.csv")); 

         md5 = DigestUtils.md5Hex(is); 

     } catch (Exception e) { 

         e.printStackTrace(); 

     } 

     logger.debug("MD5 for File: {}", md5); 

 } 

上面的代碼就可以直接獲得 InputStream 的 MD5 哈希。

程序的輸出為:

09:32:31.522 [main] DEBUG c.i.s.c.t.utilities.CodecUtilsTest - MD5  

for File: 1ec6473fc1bd50a982767f555734af64 

SHA3 256

與 MD5 哈希算法是一致的。

Java 獲得文件的指紋

你需要首先也將文件讀取為 InputStream ,然后使用 Apache 提供的 DigestUtils.sha3_256Hex(is); 就可以了。

考察下面的代碼:

/** 

   * Test to get file's SHA3_256Hex Hash 

   * 

   * @throws Exception 

   */ 

  @Test 

  public void fileSHA3_256HexTest() throws Exception { 

 

      String sha3Hex256 = StringUtils.EMPTY; 

 

      try { 

          InputStream is = FileUtils.openInputStream(new File(SCOConstants.PATH_DATA_EXCHANGE + "Estimated vs Original Manual (JIRA) 10-23-20.csv")); 

          sha3Hex256 = DigestUtils.sha3_256Hex(is); 

      } catch (Exception e) { 

          e.printStackTrace(); 

      } 

      logger.debug("SHA3_256Hex for File: {}", sha3Hex256); 

  } 

運(yùn)行程序的輸出為:

09:35:48.093 [main] DEBUG c.i.s.c.t.utilities.CodecUtilsTest - 

SHA3_256Hex for File: 

47ec963787f3acf88747ca7a37ccac9e2cc9b05c87eda1852cb4bc3b0273a431 

延伸 · 閱讀

精彩推薦
  • JAVA教程java跟蹤執(zhí)行的sql語(yǔ)句示例分享

    java跟蹤執(zhí)行的sql語(yǔ)句示例分享

    這篇文章主要介紹了java跟蹤執(zhí)行的sql語(yǔ)句示例分享,需要的朋友可以參考下 ...

    java教程網(wǎng)2712019-11-16
  • JAVA教程Java判斷字符串是否為IP地址的方法

    Java判斷字符串是否為IP地址的方法

    這篇文章主要為大家詳細(xì)介紹了Java判斷字符串是否為IP地址的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下...

    簡(jiǎn)簡(jiǎn)單單OnlineZuozuo3112020-08-09
  • JAVA教程淺談在eclipse中如何修改svn的用戶名和密碼

    淺談在eclipse中如何修改svn的用戶名和密碼

    這篇文章主要介紹了在eclipse中如何修改svn的用戶名和密碼的方法,在eclipse中經(jīng)常用svn進(jìn)行代碼版本控制,提交或更新代碼的時(shí)候需要我們輸入用戶名和密...

    yuanyi8608291672020-07-15
  • JAVA教程Java中Arrays的介紹及使用方法示例

    Java中Arrays的介紹及使用方法示例

    這篇文章主要給大家介紹了關(guān)于Java中Arrays及使用方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需...

    山有caspar4242020-09-02
  • JAVA教程win7下安裝 JDK 基本流程

    win7下安裝 JDK 基本流程

    這篇文章主要介紹了win7下安裝 JDK 基本流程,需要的朋友可以參考下 ...

    Java教程網(wǎng)2502019-11-23
  • JAVA教程java實(shí)現(xiàn)sunday算法示例分享

    java實(shí)現(xiàn)sunday算法示例分享

    Sunday算法的思想和BM算法中的壞字符思想非常類似。差別只是在于Sunday算法在匹配失敗之后,是取目標(biāo)串中當(dāng)前和Pattern字符串對(duì)應(yīng)的部分后面一個(gè)位置的字...

    java技術(shù)網(wǎng)5002019-10-30
  • JAVA教程用jdom創(chuàng)建中文的xml文件的方法

    用jdom創(chuàng)建中文的xml文件的方法

    下面小編就為大家?guī)硪黄胘dom創(chuàng)建中文的xml文件的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧 ...

    java教程網(wǎng)4922020-06-21
  • JAVA教程以實(shí)例簡(jiǎn)介Java中線程池的工作特點(diǎn)

    以實(shí)例簡(jiǎn)介Java中線程池的工作特點(diǎn)

    這篇文章主要介紹了以實(shí)例簡(jiǎn)介Java中線程池的工作特點(diǎn),線程池是Java實(shí)現(xiàn)多線程編程的基礎(chǔ),需要的朋友可以參考下 ...

    彬彬寒靈4082020-01-04
主站蜘蛛池模板: 日本人乱人乱亲乱色视频观看 | 成人免费在线视频 | 欧洲伊人网| 欧美三级欧美成人高清www | 免费毛片儿| 国产电影av在线 | 欧洲精品久久久 | 日本精品久久久一区二区三区 | 中文字幕精品在线播放 | 精品国产精品久久 | 久久精品艹| 国产一级爱c视频 | 在线视频观看国产 | 国产一级毛片视频在线! | 亚洲精品永久视频 | av在线免费观看不卡 | 欧美国产第一页 | 国产中文99视频在线观看 | 色女生影院 | 96视频在线免费观看 | 成人男女啪啪免费观看网站四虎 | 久久久久久91 | 韩国一大片a毛片 | 多男操一女视频 | 久久久久久久久国产精品 | 久久久久久免费免费 | 中文在线日韩 | 国产精品美女一区二区 | 日韩视频一二区 | 国产在线一级片 | 久久91亚洲精品久久91综合 | 亚洲一级网站 | 麻豆一二区 | 国内久久久久 | 国产精品久久久久永久免费观看 | 免费男女乱淫真视频 | 欧美亚州 | 日日操夜夜透 | 狠狠干五月 | 久久精品视频69 | 99热99精品 |