【问题标题】:file validation, prevent file change in C++ [closed]文件验证,防止 C++ 中的文件更改 [关闭]
【发布时间】:2012-06-21 09:49:34
【问题描述】:

验证文件和防止更改其内容的最简单方法是什么?

就像获取文件的md5 hash 并将保存的md5 哈希与当前的md5 hash 进行比较。

如何在 C++ 中做到这一点?

例子:

我有一个文件: myfile.txt

I am content

基本上是我想要的:

bool validate()
{
  string saved_content = "I am content";
  if(saved_content !== CONTENT_FROM_FILE("myfile.txt")) return false;
  return true;
}

【问题讨论】:

  • 除非您让操作系统强制执行此操作(例如,获取排他锁或使用适当的文件系统权限),否则无法阻止某人更改文件。
  • 创建一个 SHA1 和,要求用户写下来或打印出来。下次读取文件时,要求用户输入之前记下的校验和。这几乎是防止有权访问文件的用户篡改文件的唯一真正方法。

标签: c++ file validation hash md5


【解决方案1】:

最简单的方法是使用有用的库 OpenSSL。它有some function 来计算哈希(md5,sha1,...) 您应该将哈希值存储在内存或安全文件中,并定期重新计算文件的哈希值。加密哈希函数比 CRC32 更可靠

【讨论】:

    【解决方案2】:

    您还可以使用 CRC 来验证是否发生了任何更改。 Here 是在 C++ 中使用 CRC 的几种方法

    编辑-问题不是很清楚,但我假设您想在一段时间内检测文件中的更改。所以我的方法是获取一个CRC并将其存储在某个地方,然后您可以将最新的CRC与存储的值进行比较,以了解文件是否已被修改。

    【讨论】:

      猜你喜欢
      • 2011-07-06
      • 2016-10-03
      • 1970-01-01
      • 2013-11-16
      • 1970-01-01
      • 2011-12-01
      • 2014-12-23
      • 2017-08-02
      • 1970-01-01
      相关资源
      最近更新 更多