Ну, большинство людей просто используют плохие блоки
...
В противном случае просто зашифруйте нули. Шифрование делает именно то, что вы хотите. Зашифрованные нули выглядят как случайные данные. Расшифровка случайных данных снова превращает их в нули. Это детерминировано, обратимо, пока вы знаете ключ.
cryptsetup open --type plain --cipher aes-xts-plain64 /dev/yourdisk cryptodisk
shred -n 0 -z -v /dev/mapper/cryptodisk # overwrites everything
cmp /dev/zero /dev/mapper/cryptodisk # byte-by-byte comparison
Это должно использовать полную скорость диска в современной системе с AES-NI.
Также вроде работает просто для конвейера (без поддержки реального хранилища)
cd /dev/shm # tmpfs
truncate -s 1E exabyte_of_zero
losetup --find --show --read-only exabyte_of_zero
cryptsetup open --type plain --cipher aes-xts-plain64 --readonly /dev/loop4
cat /dev/mapper/loopcrypt | something_that_wanted_random_data
или если мы все еще записываем на диск и сравниваем
cat /dev/mapper/loopcrypt > /dev/sdx
# overwrites until no space left on device
cmp /dev/mapper/loopcrypt /dev/sdx
# compares until EOF on /dev/sdx OR loopcrypt and sdx differ byte X.
В отличие от ГПСЧ, это также можно использовать для начала сравнения данных где-то посередине. файла. С традиционным ГПСЧ вам нужно заново сгенерировать его заново, чтобы вернуться к той позиции, которая вас интересовала. Конечно, вы можете просто создать случайное начальное число на основе смещения или чего-то еще ...
{{1} }