簡體   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