如何取得檔案的 sha256sum 並比較簽入一行?

如何取得檔案的 sha256sum 並比較簽入一行?

我一直發現自己想要下載並立即在腳本中檢查下載的完整性,但我一直無法找到正確的sha256sum.

MY_SHA256=e147f0392686c40cfd7d5e6f332c6ee74c4eab4d24e2694b3b0a0c037bf51dc5
sha256sum some_binary | sha256sum --check ${MY_SHA256}

如何取得sha256sum新檔案的 並立即將其與已知的雜湊值進行比較?

答案1

我已經下載了一個存檔檔案和一個隨附的校驗和檔案。以下是我驗證下載的存檔的雜湊值是否與下載的校驗和檔案中的雜湊值相符的方法:

echo "$(cat archive.tar.gz.sha256) archive.tar.gz" | sha256sum --check --status

--status標誌阻止所有 stdout 輸出(比 更有效--quiet)。然後,我需要依靠返回程式碼來確定它們是否匹配,這正是我想要的,因為我將在腳本中使用它。

答案2

例子:

 echo "67574ee0039eaf4043a237e7c4b0eb432ca07ebf9c7b2dd0667e83bc3900b2cf kali-linux-2019.2-amd64.iso" | sha256sum -c

如果您有該sha256sum文件,則可以直接使用它:

sha256sum -c "kali-linux-2019.2-amd64.iso.txt.sha256sum"

解釋:

在上面的例子中,你有

echo "<known SHA 256 sum of the file> <name of the file>" | sha256sum -c

sha256sum -c選項可以從文件sha256sum或從STDIN.如果您沒有該sha256sum文件,則echo可以使用該命令提供sha256sum文件中包含的相同詳細資訊。

如果您有該sha256sum文件,則可以直接使用它:

sha256sum -c "<sha256sum file name>"

筆記:

或者,您可以使用shasum -a 256而不是sha256sumwhere-a指定要使用的演算法。

答案3

您可以看到,它sha256sum --check獲取了先前(常規)sha256sum 運行的輸出:它透過 stdin 獲取雜湊值和檔案名,並將它們與實際檔案進行比較。

因此,顯而易見的事情就是手動為其提供所需格式的輸出:

$ echo "da39a3ee5e6b4b0d3255bfef95601890afd80709  motd" | sha1sum --check
motd: OK

答案4

如果您有校驗和文件,則只需執行sha256sum --check.例如:

% ls
elasticsearch-7.9.3-darwin-x86_64.tar.gz           # File to check
elasticsearch-7.9.3-darwin-x86_64.tar.gz.sha512    # Checksum file


% sha512sum --check elasticsearch-7.9.3-darwin-x86_64.tar.gz.sha512
elasticsearch-7.9.3-darwin-x86_64.tar.gz: OK

相關內容