2011-04-29 67 views
4

我想獲得獨立於外部屬性(如路徑和文件名)的文件哈希(主要是視頻文件)。我將需要將散列存儲在數據庫中,並比較文件散列以找到相同的文件。用於識別相同文件的Java文件哈希

+1

可以使一個散列函數取決於你喜歡的任何東西,包括'外部屬性'或不。寫這樣一個你不明白的函數是什麼? – DJClayworth 2011-04-29 15:47:47

回答

2
public byte[] digestFile(File f){ 
    try { 
    MessageDigest messageDigest = MessageDigest.getInstance("SHA-1"); 
    FileInputStream fis = new FileInputStream(f); 
    byte[] buffer = new byte[1024]; 
    int read = -1; 
    while ((read = fis.read(buffer)) != -1) { 
     messageDigest.digest(buffer, 0, read); 
    } 
    return messageDigest.digest(); 
    } catch (VariousExceptions e) { 
    //handle 
    } 
} 
1

取決於你需要什麼,你可以做到這一點很容易地使用GuavaFilesByteStreams類:

byte[] digest = Files.getDigest(file, MessageDigest.getInstance("SHA"));