关于使用CheckSum判定数据文件是否更改

NemoBio 2012-04-27 03:27:53
系统要求能够识别出数据文件是否被外部程序篡改过,我查了一下资料觉得利用文件的CheckSum可以实现这样的功能.我的设想是用我的程序采用MD5算法计算数据文件的校验和,但是该校验和如何存储呢,有如下两种情况:
1.如果将该CheckSum值保存在数据文件中,如果恶意用户破解了我的文件格式,篡改数据后,重新计算CheckSum并更新到数据文件中。那我的程序不是无法检测到数据被篡改了吗?
2.如果将该CheckSum存储在本地数据库中,如何能始终维持两者之间的对应关系呢?如果恶意用户修改文件名,则无法保持文件与CheckSum的对应关系了?
请问,应该怎样设计呢?
...全文
435 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
WAN 2012-04-28
  • 打赏
  • 举报
回复
你的第一种方案,可以利用数字签名技术,用私钥签名,这样只要你的程序保管好私匙,其它人就无法生成正确的内容摘要以通过公匙验证。这种方案好处是数据文件可移动、可重命名。参见:
http://msdn.microsoft.com/zh-cn/library/system.security.cryptography.dsacryptoserviceprovider.aspx
你的第二种方案,好像本身就可以了啊,如果说“恶意用户修改文件名”,以至找不到对应的文件,这时不就可以认为“识别出数据文件被外部程序篡改过”了吗,又何必非要“始终维持两者之间的对应关系”呢?
NemoBio 2012-04-27
  • 打赏
  • 举报
回复
给点建议吧。
NemoBio 2012-04-27
  • 打赏
  • 举报
回复
之前考虑过将CheckSum进行RSA算法进行签名后存储在数据文件中,不知道对不对.或者有没有什么经典的解决方案
WAN 2012-04-27
  • 打赏
  • 举报
回复
建议可以参考一下 数字签名 的技术
NemoBio 2012-04-27
  • 打赏
  • 举报
回复
有人设计过这类的方案吗?
NemoBio 2012-04-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

必须有一个对应关系,知道checksum是属于哪个文件的,比如可以根据路径作对应
[/Quote]
你的意思是倾向于第二种,将checksum存储在本地数据库中。你所谓的路径对应是文件路径?
bdmh 2012-04-27
  • 打赏
  • 举报
回复
必须有一个对应关系,知道checksum是属于哪个文件的,比如可以根据路径作对应

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧