我有一個應用程序,如果一個audiofile編輯cckcking。之後,我應該知道是否有人編輯了這個音頻文件。我正在考慮在音頻文件中添加一個水印,以便稍後檢查水印是否已更改,並知道是否編輯了音頻文件。是否可以使用java爲音頻文件添加水印?
此外,有沒有另一種方法在java中的音頻編輯保護?
我有一個應用程序,如果一個audiofile編輯cckcking。之後,我應該知道是否有人編輯了這個音頻文件。我正在考慮在音頻文件中添加一個水印,以便稍後檢查水印是否已更改,並知道是否編輯了音頻文件。是否可以使用java爲音頻文件添加水印?
此外,有沒有另一種方法在java中的音頻編輯保護?
有一種方法適用於任何文件,而不僅僅是音頻。 您可以使用散列算法計算和比較校驗和。
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:
更加安全的爲什麼不直接用新的比較原始文件的大小?如果它更大或更小,那麼它被編輯。或者保存創建/上傳/不管什麼日期並與修改日期進行比較。 –
爲什麼不使用散列? – Palcente
而不是水印,比較校驗和。 –