【发布时间】:2014-04-13 12:34:00
【问题描述】:
我需要编写一个处理简单数据库的程序。我的目标是简单地将内存中的所有数据写入 .txt,然后在程序开始时将其全部读取。我希望能够防止用户在程序之外编辑 txt 文件。
需要考虑的一些事项: - 我希望这个解决方案是可移植的(不是多平台,只是在 Windows 上,但我不想要任何我必须手动设置或额外依赖软件的安全设置) - 预防的方法不需要太极端,只要打开txt随意编辑就可以了。
我目前的计划是: - 我想用程序在读/写时内置的密码来屏蔽数据,因此在维护密钥的同时难以轻松编辑。 - 我将在读取时间进行数据验证,以确认密码密钥以及数据的合法性。
我的问题: - 用户可以打开txt并将一个值更改为另一个合法数据
我想要什么: - 一些互斥锁,如 windows api 将支持的锁定功能,我可以以可移植方式(在 windows 平台内)编码,只要用户具有可重新分发的可视 c++ 即可运行。 (但我会寻求帮助)
感谢您的阅读,我希望看到一些意见:)
编辑:
我想知道,由于 Windows 平台默认支持 zip,是否有写入 .zip 容器的方法,该容器可以在创建 .zip 时加密,然后使用密钥在程序中访问?如果可行,我认为这将是一个理想的解决方案
【问题讨论】:
-
'windows api 支持的一些互斥锁之类的锁定功能......'恐怕没有这样的神奇可用的东西。跨度>
-
您唯一的选择是基于某种加密。一种选择(不会使内容不可读)是在文件中包含用于验证内容未更改的数字签名。但问题转移到:签名(或加密)密钥存储在哪里?
-
@user3483187:你为什么要这么做?如果用户更改文件并破坏程序功能,那是他自己的错。
-
hmm 我想没有神奇的伟大之处 :( 那是最初的计划,我正在考虑将“密码”或数字签名硬编码到程序中。我不担心有人解密我的签名或类似的东西,我只是不希望编辑变得微不足道。我很欣赏它是一个不错的前进方向的保证。我很可能会这样做,然后每个字段读入,如果修改将被默认并通知用户修改后的数据库。这也是一个学校项目,所以我想把它做得很好:)
-
这是一种“俗气”的方式,不会阻止所有人。更改文件类型扩展名。将其命名为 .ful 而不是 .txt 或类似名称。将文件标记为隐藏。除非最终用户真的知道要查找什么,否则他们不会知道它有错误的扩展名。当然,这不是一种安全的方法,也不是最佳实践。
标签: c++ windows data-protection