要散列的数据量是否有上限 'safe'?
Is there a maximu 'safe' amount of data to hash?
我想向设备发送一些数据,我需要验证一致性。不会有攻击者,可能只是硬件故障。
我的最大数据大小约为 256kB。
我对小型算法和小型散列感兴趣。可以使用诸如 CRC8、CRC16、CRC32 以及 MD5 或 SHA1 之类的东西。 SHA2 哈希对我来说太大了。
实际数据大小限制是否有一些通用规则?
没有。 sha 1 散列在所有意图和目的上都是全球唯一的,并且该算法不会因非常大的输入而崩溃。如果你改变了一个位,散列应该改变。
您需要了解您的频道的错误特征以及您的应用程序可接受的误报率是多少。出错的频率是多少?改变的位数分配是怎样的?当出现错误时,您是否偶尔会翻转一个位,或者是否会翻转很多位或整条消息被篡改?翻转的位是否彼此靠近,即错误是否突发?
通常,您不会使用加密哈希,因为与 CRC 相比,计算它所花费的额外时间不会给您带来任何好处。您应该使用 CRC 或其他散列,例如 xxhash 系列中的散列。它们速度非常快,并且尽你所能使误报概率很低。 CRC 具有防止突发错误的特殊属性,即几个相邻或几乎相邻的位翻转。
我想向设备发送一些数据,我需要验证一致性。不会有攻击者,可能只是硬件故障。
我的最大数据大小约为 256kB。
我对小型算法和小型散列感兴趣。可以使用诸如 CRC8、CRC16、CRC32 以及 MD5 或 SHA1 之类的东西。 SHA2 哈希对我来说太大了。
实际数据大小限制是否有一些通用规则?
没有。 sha 1 散列在所有意图和目的上都是全球唯一的,并且该算法不会因非常大的输入而崩溃。如果你改变了一个位,散列应该改变。
您需要了解您的频道的错误特征以及您的应用程序可接受的误报率是多少。出错的频率是多少?改变的位数分配是怎样的?当出现错误时,您是否偶尔会翻转一个位,或者是否会翻转很多位或整条消息被篡改?翻转的位是否彼此靠近,即错误是否突发?
通常,您不会使用加密哈希,因为与 CRC 相比,计算它所花费的额外时间不会给您带来任何好处。您应该使用 CRC 或其他散列,例如 xxhash 系列中的散列。它们速度非常快,并且尽你所能使误报概率很低。 CRC 具有防止突发错误的特殊属性,即几个相邻或几乎相邻的位翻转。