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

标签 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算法,但您可以从here:中选择更安全的东西

关于java - 是否可以使用java为音频文件添加水印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36767463/

相关文章:

HttpClient 中的 JavaScript 上下文

java - 停止来自第三方 Jars 的 log4j 调试打印

java - 通过类名查找 pom 依赖项

java - 自定义设计listview位置错误

java - 使用 Gradle 隐藏 API key

java - 通过新加载的类对静态变量所做的更改似乎不适用。 ( java )

java - 如何优雅地中断 Windows 中的阻塞等待?

java - 通过显式 SSL/TLS 在 FTP 上登录成功但无法浏览文件

java - @ManyToOne 引用的 getId() 上的 LazyInitializationException

java - CloseableHttpClient 连接池关闭