国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|C/C++|

服務器之家 - 編程語言 - JAVA教程 - Java 獲得文件的指紋

Java 獲得文件的指紋

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

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

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

常用的算法最開始使用的是 MD5,隨后隨著技術的發展,MD5 算法已經被確定是不安全的了。

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

哈希算法通常有以下幾個特點:

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

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

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

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

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

如果自己寫的話,可能這一步有點代碼。

你可以使用 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); 

  } 

運行程序的輸出為:

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

SHA3_256Hex for File: 

47ec963787f3acf88747ca7a37ccac9e2cc9b05c87eda1852cb4bc3b0273a431 

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 中文字幕在线观看 | 国产综合亚洲精品一区二 | 嫩草网站在线观看 | 色综合久久天天综合网 | 欧美激情一区二区三级高清视频 | 久久人人爽人人爽人人片av不 | 欧美在线观看免费观看视频 | 欧美精产国品一二三区 | 亚洲天堂影院 | 午夜在线观看视频 | 日本久久久 | 91成人免费在线观看 | 999精品视频一区二区三区 | 日韩精品毛片免费看 | 国产精品久久久久白丝呻吟 | 欧美日本免费一区二区三区 | 91成人短视频在线观看 | 日韩中文字幕视频在线 | 国产精品视频久久 | 成人国产精品免费观看 | 成人午夜视频网 | 国产精品久久av | 日本免费高清视频 | 婷婷综合激情 | 国产黄色片免费观看 | 欧美精品亚洲 | 亚洲在线影院 | 久久中文字幕一区 | 免费黄色大片 | 成人免费网站 | 欧美日本在线观看 | av成人在线观看 | 久久一区 | 日本精品视频一区二区 | 午夜免费视频 | 四房婷婷 | 精品无码久久久久久久动漫 | 亚洲成熟少妇视频在线观看 | 在线观看国产视频 | 日韩成人免费 | 亚洲精品第一区在线观看 |