自引用MD5文件

Rob*_*sbé 5 java security md5

我正在开发一个需要在外部文件中加载和保存数据的程序,我一直在搜索选项,我选择将数据保存在二进制文件中.

因为我不希望有人能够轻松编辑文件,所以我考虑在文件的第一行写入,它的md5总和.在这种情况下,如果文件的某些数据发生更改,则总和将与第一行的数据不匹配.

我发现的问题是,如果我计算MD5,之后我在文件中写入信息,很明显总和会有所不同,所以,我怎么能对它进行排序呢?

如果你给我一个比总和更好的选择,它将被平等地接受.

提前致谢.

Phi*_*ter 7

你的威胁模型是什么?

如果你只是想防止随意摆弄,md5文件的主要数据,那么写md5总和到最后.要验证,剥去md5总和,然后md5只删除原始文件.

如果你想防止恶意和熟练的破解,你就是运气不好; 您可以复制您使用的任何验证算法,特别是如果它们可以访问程序本身.如果攻击者从程序二进制文件中提取密钥,即使加密签名也可能失败.

如果这是一个大问题,unix解决方案是作为setuid或运行setgid到不同的用户并写入用户无法修改的目录.我不确定什么是一个好的通用Java解决方案,但重点仍然是:用户不应该修改您的数据,因为他们被阻止这样做,而不是因为他们被检测到尝试.