繁体   English   中英

Java 与 Linux 之间的 Sha256 校验和差异

[英]Sha256 checksum difference between Java vs Linux

我正在编写一个应用程序,在将文件发送到下游之前计算文件的校验和。 在下游应用程序中,linux shell 脚本用于处理文件。 请注意,从 Java 应用程序计算的校验和与使用 Linux 命令“sha256sum”计算的校验和不匹配。

以下是 JAVA 中的代码片段:

public static String calculateChecksum(File file) throws IOException {
    try (InputStream inputStream = FileUtils.openInputStream(file)) {
        return DigestUtils.sha256Hex(inputStream); //from org.apache.commons.codec.digest
    }
}

使用 java api 我得到校验和值为:

d05a9724479af8a7a20f7acff3629b0dd8aaa447ec821b4b31708bc43eb99841

但是当使用 Linux 命令' sha256sum <file> '为同一文件计算校验和时,它会给出

37f865eb2a3956e3f903eaaf92f0459143cf9b9699a7d1d6bc91bfc89ad5eb8c

以下是文件包含的内容。 您可以创建具有以下内容的文件。 我正在使用 abc.txt。 它有换行符。

dscscsdvcs

kkl

有人可以建议这里出了什么问题吗? 文件未损坏。 源和目的地的内容相同。

我能够从两个不同的文件中获取两个摘要。 查看他们的 hexdumps:

d05a9724479af8a7a20f7acff3629b0dd8aaa447ec821b4b31708bc43eb99841:

00000000: 6473 6373 6373 6476 6373 0d0a 0d0a 6b6b  dscscsdvcs....kk
00000010: 6c                                       l

37f865eb2a3956e3f903eaaf92f0459143cf9b9699a7d1d6bc91bfc89ad5eb8c:

00000000: 6473 6373 6373 6476 6373 0a0a 6b6b 6c    dscscsdvcs..kkl

不同之处在于行尾类型,*nix 与 MSWin。

文件的大小不一样,它是 15 对 17 字节。

Java 给出了相同的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM