2017-03-31 31 views
0

處理一個生成MD5散列字符串的舊java項目讓我想到了事物的當前狀態。當前生成MD5散列(Java 8/9)的方式

有沒有一種很好的方式來創建使用當前技術的散列?也許一些Java 8/9的新庫?

我生成MD5哈希前的樣子:

import java.security.*; 
import java.math.*; 

public class MD5 { 
    public static void main(String args[]) throws Exception{ 
     String s="This is a test"; 
     MessageDigest m=MessageDigest.getInstance("MD5"); 
     m.update(s.getBytes(),0,s.length()); 
     System.out.println("MD5: "+new BigInteger(1,m.digest()).toString(16)); 
    } 
} 

感謝。

+1

JDK中沒有內置新庫。當然,有些第三方庫會做得更好,但一段時間以來都是如此。 –

+0

@LouisWasserman謝謝。任何關於第三方庫的建議都被認爲是最佳實踐? – 000000000000000000000

+2

https://github.com/google/guava/wiki/HashingExplained –

回答

1

我最近構建了我的惡意軟件分析項目,在該項目中爲目錄和子目錄中的所有文件生成MD5散列。

我用Apache Commons Codec

這裏是代碼的相關部分:

for (File file : fList) { 
    if (file.isFile()) { 
     try { 
       fin = new FileInputStream(file); 
       String digest = DigestUtils.md5Hex(fin); //used to get MD5 
       String path = file.getAbsolutePath(); //return full path 
       hash.put(path, digest); //put path and MD5 in map 
       fin.close(); 
      } catch (FileNotFoundException e) { 
       e.printStackTrace(); 
      } 
    } else if (file.isDirectory()) { 
     listFiles(file.getAbsolutePath()); // recursivily call 
    } 
} 

希望這有助於你。