如何解决使校验和“无效”的最佳方法
|| 假设我有一个4KB的缓冲区,该缓冲区在开始时包含一个校验和。该缓冲区包含引用其他缓冲区的元数据。 N.B.缓冲区是内存映射文件。我注意到其中一个缓冲区无效(校验和无法计算出或者校验和很好,但它引用了无效的缓冲区)。现在,我想使引用另一个无效缓冲区的缓冲区无效。数学上使缓冲区无效的最佳方法是什么?损坏校验和本身,使其可能与数据不匹配或损坏数据,从而可能与校验和不匹配。还是共有第三种更好的方法?对于它的价值,这是CRC32变体。解决方法
假设引用缓冲区的CRC有效,则只需从中减去1,就可以使缓冲区无效。从您的描述来看,情况似乎是这样,因为您声明所引用的缓冲区是CRC可能是错误的缓冲区。
如果引用的CRC32无效,则最安全的选择是计算CRC,然后减去1。您需要首先了解正确的CRC,因为尽管随机选择CRC不太可能是正确的,但仍然有大约四十亿分之一的正确机会。
更改CRC似乎是最安全的选择。缺少对CRC32算法进行数学分析的方法,无法保证对数据的特定更改不会生成相同的CRC值(因为大量数据集可能映射到相同的CRC) 。
但是,可以确定的是,特定数据集将始终生成相同的CRC,因此,通过将CRC更改为其他值,可以确保该块现在将无效。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。