Я не знаю сериализации, которая делает это специально.
При необходимости иногда выполняется сериализация объекта, а затем этот байтовый поток и его ha sh являются полями в другом промежуточном объекте, который также сериализуется. Этот последний поток байтов - это то, что передается.
При получении этот поток байтов десериализуется, восстанавливая промежуточный объект. Ha sh его поля bytestream вычисляется и сравнивается с его полем ha sh. Если все в порядке, то поле байтового потока можно безопасно десериализовать, чтобы восстановить исходный объект.
Это немного неэффективно - есть два объекта для сериализации. Тем не менее, промежуточный объект в основном является просто потоком данных, и это часто может быть очень тривиально для сериализации (особенно для двоичных сериализаторов, таких как GPB).
Это также часто не нужно. Такие вещи, как файловые системы, TCP и др. c. в них уже встроено множество проверок и исправлений ошибок. Если ваш транспортный носитель уже содержит встроенную проверку целостности данных, его дополнение может оказаться излишним. Вы упомянули о хранении файлов - использование файловой системы, такой как ZFS, было бы отличным способом обеспечения хорошей целостности данных (плюс множество других преимуществ), уменьшая необходимость вашей собственной проверки. Независимо от того, что вы делаете, ZFS все равно будет применять исправление ошибок к сохраненным данным.