Block-Device

將圖像寫入驅動器時,為什麼 SHA 256 總和會發生變化?

  • July 2, 2016

我注意到,如果我通過ddUSB 驅動器將圖像寫入然後sha256sum該圖像;總和發生變化。為什麼?它永遠不會與 ISO 相同。

我正在執行:(sha256sum /dev/sdb在塊設備上,而不是分區上)

如果您的映像比 USB 驅動器小,那麼您需要確保從驅動器中讀回該大小的數據,否則驅動器的所有其餘部分都將添加到 sha256 中並創建不同的結果。

例如

$ ls -l tst.iso                                                                
-rw-r--r-- 1 root root  Jul  1 14:58 tst.iso

$ /usr/bin/sha256sum tst.iso
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14  tst.iso

$ dd if=tst.iso of=/dev/sdg bs=1M
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 200.066 s, 5.4 MB/s

當我們讀回這段程式碼時,我們需要確保我們只讀取了我們寫入的 1,073,741,824 個字節。在這種情況下,我知道它正好是 1024 個 1M 塊,所以我可以指定一個bs=1M count=1024.

$ dd if=/dev/sdg bs=1M count=1024 | sha256sum
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 37.8798 s, 28.3 MB/s
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14  -

如果總字節數不匹配,那麼 sha256 會有所不同。

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