我想发送一些数据到一个设备,我需要验证一致性。不会有攻击者,可能只是硬件故障。
在我的例子中,最大数据大小大约为256 my。
我对小内存占用的算法和小规模的哈希感兴趣。比如CRC8,CRC16,CRC32,还有MD5或SHA1都可以使用。SHA2散列对我来说太大了。
对于实际的数据大小限制有什么一般规则吗?
发布于 2016-10-12 14:33:26
您需要了解通道的错误特性,以及您的应用程序可以接受的错误阳性率是什么。有多少次出现错误?改变的位数的分布是什么?您是否偶尔会有一位翻转,或者当出现错误时,会有很多位翻转或整条消息被转发?翻转后的比特是否彼此靠近,即错误是否发生在突发事件中?
通常,您不会使用加密散列,因为与CRC相比,计算它所花费的额外时间将不会给您带来任何好处。您应该使用CRC或其他哈希,例如Xx散列家族中的一个。它们非常快,并且尽可能好地使假阳性的概率很低。CRC具有防止突发错误的特殊属性,即几个相邻或几乎相邻的位翻转。
发布于 2016-10-12 10:44:42
不是的。对于所有意图和目的而言,sha 1散列都是全局唯一的,并且算法不会对非常大的输入进行分解。如果您更改了一位,则哈希应该会更改。
https://stackoverflow.com/questions/39996062
复制相似问题