我有一个应用程序,如果音频文件被编辑,则会进行检查。之后,我应该知道是否有人编辑过这个音频文件。我正在考虑向音频文件添加水印,以便稍后检查水印是否已更改并了解音频文件是否被编辑。
另外,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算法,但您可以从here:中选择更安全的东西
关于java - 是否可以使用java为音频文件添加水印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36767463/