【发布时间】:2019-03-11 22:18:49
【问题描述】:
我有一个需要推送到嵌入式设备的数据文件。文件的典型大小范围从几个字节到最大约 10K。我的目的是检测对这个文件内容的篡改(chksum 是数据文件中的最后一个元素)。数据范围是字符串、有符号和无符号整数的混合。我正在寻找一种强大的算法来避免大量碰撞以及不使用大量周期来计算的东西。我正在考虑Fletcher16()、CRC-32 和解决方案discussed in this post
对于我的数据大小/内容类型的简单算法有什么建议吗?
提前致谢!
编辑:- 感谢大家有见地的回答和建议。
一些背景知识:这不是一个超安全的数据文件。我只是想能够检测是否有人写错了。该文件由模块生成,软件应该只是read only。最近有几个例子,人们将它从目标文件系统中拉出来,编辑并推回目标,希望能解决他们的问题。 (顺便说一句,如果仔细编辑它会)。但这违背了自动生成这个文件的目的和这个模块的存在。我想检测和这样好玩的“hacks”并优雅地中止。
【问题讨论】:
-
如果你想防止篡改,你应该使用加密安全的哈希函数而不是校验和。
-
哪个更重要:“检测篡改”或“不使用大量周期来计算”或两者(意味着你不会得到两者)。
-
@chux:我猜都是 :) 我已经更新了这个问题,以提供一些背景信息,说明它的来源..