我想将一些数据发送到设备,我需要验证一致性。没有攻击者,可能只有硬件故障。
在我的情况下,Maximmum数据大小约为256kB。
我对小尺寸算法以及小尺寸哈希感兴趣。可以使用CRC8,CRC16,CRC32以及MD5或SHA1之类的东西。 SHA2哈希对我来说太大了。
是否存在实际数据大小限制的一般规则?
答案 0 :(得分:0)
没有。 sha 1散列是全局唯一的意图和目的,并且算法不会因非常大的输入而分解。如果更改单个位,则哈希值应更改。
答案 1 :(得分:0)
您需要了解频道的错误特征以及您的应用可接受的误报率。有多少次出错?改变位数的分布是什么?您偶尔会翻转一个位,或者是否有大量的位翻转,或者在出现错误时整个消息是否存在?翻转的位是否彼此靠近,即错误是否以突发形式发生?
一般情况下,您不会使用加密哈希,因为与CRC相比,计算它所花费的时间增加将无法获益。您应该使用CRC或其他哈希,例如xxhash系列中的哈希。它们非常快,并且能够以低概率产生误报。 CRC具有防止突发错误的特殊属性,即几个相邻或几乎相邻的位翻转。