2016-04-21 169 views
1

我有一個應用程序,如果一個audiofile編輯cckcking。之後,我應該知道是否有人編輯了這個音頻文件。我正在考慮在音頻文件中添加一個水印,以便稍後檢查水印是否已更改,並知道是否編輯了音頻文件。是否可以使用java爲音頻文件添加水印?

此外,有沒有另一種方法在java中的音頻編輯保護?

+0

更加安全的爲什麼不直接用新的比較原始文件的大小?如果它更大或更小,那麼它被編輯。或者保存創建/上傳/不管什麼日期並與修改日期進行比較。 –

+0

爲什麼不使用散列? – Palcente

+0

而不是水印,比較校驗和。 –

回答

2

有一種方法適用於任何文件,而不僅僅是音頻。 您可以使用散列算法計算和比較校驗和。

Java在java.security.MessageDigest包中內置了此功能。

爲了得到校驗,考慮下面的代碼片段:

try (FileInputStream inputStream = new FileInputStream(file)) { 
    MessageDigest digest = MessageDigest.getInstance("MD5"); 

    byte[] bytesBuffer = new byte[1024]; 
    int bytesRead = -1; 

    while ((bytesRead = inputStream.read(bytesBuffer)) != -1) { 
     digest.update(bytesBuffer, 0, bytesRead); 
    } 

    byte[] hashedBytes = digest.digest(); 

    return convertByteArrayToHexString(hashedBytes); 
} catch (NoSuchAlgorithmException | IOException ex) { 
    throw new HashGenerationException(
      "Could not generate hash from file", ex); 
} 

這個方法返回身體的字節數組散列的字符串表示的輸入文件。您可以在原始和可疑文件上調用此代碼並進行比較。如果字符串匹配,文件是相同的。

代碼剪斷使用快速MD5 angorithm,但你可以選擇一些從here:

+0

hurreyyy !!!!!!!!!!!!!!!!!!!!它的作品... – Unnati

+0

@Unnati請你接受答案 – Palcente

相關問題