将映像写入驱动器时,为什么 SHA 256 总和会发生变化?

将映像写入驱动器时,为什么 SHA 256 总和会发生变化?

我注意到,如果我通过ddUSB 驱动器写入图像,然后再写入sha256sum该图像;总和发生变化。为什么?它永远不会与 ISO 相同。

我正在运行:(sha256sum /dev/sdb在块设备上,而不是分区上)

答案1

如果您的映像小于 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 将会不同。

相关内容