web-dev-qa-db-ja.com

ドライブにイメージを書き込むときにSHA 256合計が変わるのはなぜですか?

dd経由でUSBドライブに画像を書き込んでから、sha256sumその画像;合計が変わります。どうして? ISOのそれと同じになることは決してありません。

私は走っています:sha256sum /dev/sdb(パーティションではなくブロックデバイス上)

2
user26053

イメージが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バイトのみを読み取るようにする必要があります。この場合、それぞれが1Mの1024ブロックであることがわかっているので、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は異なります。

4
Stephen Harris