This should be checking if the input is null rather than not null before
early exiting, otherwise the data itself will never have the checksum
calculated.
Removes unused headers and ensures that all necessary headers are
included. In particular, this removes quite a few <iostream> includes,
which removes quite a few static constructors.