是否可以使用java为音频文件添加水印?

问题描述:

我有一个应用程序,如果一个audiofile编辑cckcking。之后,我应该知道是否有人编辑了这个音频文件。我正在考虑在音频文件中添加一个水印,以便稍后检查水印是否已更改,并知道是否编辑了音频文件。是否可以使用java为音频文件添加水印?

此外,有没有另一种方法在java中的音频编辑保护?

+0

更加安全的为什么不直接用新的比较原始文件的大小?如果它更大或更小,那么它被编辑。或者保存创建/上传/不管什么日期并与修改日期进行比较。 –

+0

为什么不使用散列? – Palcente

+0

而不是水印,比较校验和。 –

有一种方法适用于任何文件,而不仅仅是音频。 您可以使用散列算法计算和比较校验和。

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