Conceptually,
# tee /dev/DEVICE </dev/random | sha256sum # echo 1 > /proc/sys/vm/drop_caches # sha256sum /dev/DEVICE
the drive size divided by 4MB, so dd with bs=4M and fixed count
(with oflag=direct you don't even need to drop caches)
The "write the block #'s to the given block" would help identify where a fraudulent device goes wrong.
But for just checking if a device is storing data 100% correctly then your way would probably be more robust. :)
Conceptually,
though I wouldn't expect this exact command sequence to work unless tee's buffer size divides /dev/DEVICE's capacity and tee errors out writing past the end of /dev/DEVICE before writing to stdout.