Filesystems

有校驗和的文件格式嗎?

  • August 3, 2021

我想為我的應用程序儲存文件的 SHA512 校驗和。如何以共同(流行)的方式做到這一點?所以這個校驗和可以被第三方應用程序使用,但也可以使用。

將校驗和寫為小寫十六進制數字,後跟兩個空格,然後是文件名,每行一個文件。md5sum這是各種sha*sumCLI 工具使用的格式。

$ sha512sum t.txt
d663b43c84ab4ba20040e568d3cb799512fcc00f1053f96f3079345f680b39429adc92f9c8c45fc9ae6053173ddc5b35ade25ae1d5c91e57b809d0c021d5c891  t.txt

$ sha512sum -c <(sha512sum t.txt)
t.txt: OK

TL; 博士

文件格式是用於生成摘要的命令的輸出。

$ shasum -a 512 [FILE] > SHA512SUM # create a checksum file (SHA512SUM)
$ shasum -c SHA512SUM              # verify [FILE] from checksum file
[FILE]: OK                         # output

有關生成校驗和文件的簡單方法,請參閱這些其他 linux 命令

長答案

這取決於shasum您使用哪種實現來檢查校驗和文件。

如果您使用的是 perl 實現 ( $ shasum -c [FILE]),那麼您可以在手冊頁中找到答案。看$ man shasum

檢查時,輸入應該是該程序以前的輸出。預設模式是列印帶有校驗和的行、指示類型的字元(’*’ 表示二進制,’’ 表示文本,’?’ 表示可移植,’^’ 表示 BITS)和每個 FILE 的名稱。

如果您使用的是GNU實現 ( $ sha512sum -c [FILE]),那麼可以在他們的coreutils 文件下找到答案:

注意:GNU sha 摘要文件參考 md5sum 摘要文件

對於每個文件,‘md5sum’ 預設輸出 MD5 校驗和、空格、指示二進製或文本輸入模式的標誌以及文件名。二進制模式用“*”表示,文本模式用“”(空格)表示。二進制模式在重要的系統上是預設的,否則文本模式是預設的。如果文件包含反斜杠或換行符,則該行以反斜杠開頭,並且文件名中的每個有問題的字元都使用反斜杠進行轉義,即使存在任意文件名,也可以使輸出明確。如果文件被省略或指定為“-”,則讀取標準輸入。

引用自:https://unix.stackexchange.com/questions/23014