Calculate the hash as it downloads, so it doesn't have to be re-read from disk