用最少的数据传输比对两地数据一致性

两个单片机之间都存有一个数据表,如何用最少的数据传输,比对两个数据表是否一致?
以下简称AB单片机,修改总是在A发起,并同步到B,B存储到flash使用 ,在AB开机时也需要比对两份数据一致,不一致则开始同步。

1.最简单的办法就是A的数据发给B,B执行逐字比对,但是这种办法要传送的数据量太大了。
2.将AB的数据表各自使用相同的校验方法(CRC/求和)得出校验值,只传输并比对校验值,但是这种方法无法保证比对结果一定正确(不同的数据可能得出相同的校验值)。
3.使用数据累加ID,当A修改数据时,数据ID+1,只需要对比AB的数据ID是否一致来判定数据相等,这个方法同样存在不同数据比对结果相同的可能。

这个需求类似于云盘和本地数据比对是否不同,如果用最少的数据交互得出100%正确的比对结果。

用hash算法,比如MD5,两组不同的数据MD5一致的概率极低。CRC其实也可以算是一种简单的hash,但那个太短,冲突的可能性大。
实际上云盘基本都是用hash来检验文件是否一致的。
一般来说MD5完全足够,你要是不放心,还可以添加一些额外信息,比如数据长度,关键点参考值,或者再补充另一种算法的hash值