保存数据永久
我工作的一个项目使用Qt,我需要保存数据(文件的路径和密码)永久性这样我就可以得到它或修改它甚至任何时候,当我退出我的应用程序,然后重新运行它。 我想用一个加密的xml文件解决它,但我想做的没有痕迹。保存数据永久
你要么使用一个文件或者其他一些平台特定数据库的机制,比如Windows的注册表。但那会留下痕迹;你不能希望在本地存储一些东西,不要在没有rootkiting操作系统的情况下留下痕迹(甚至在硬件中留下痕迹,毕竟你正在将数据写入驱动器)。
你可以希望做的一件事情就是不通过网络远程存储数据,因为网络活动通常不会被记录(但可以被观察到),但是我可以看到2个问题这种做法:
1),可能造成一些隐私关注你的用户(如果我是你的应用程序的用户,我不喜欢太看到通过线路发送我的数据到一个未知的服务器);
2)您如何识别信息以便检索?你可以在用户名和计算机硬盘ID和网络接口MAC地址上使用一些散列,但是如果其中一些改变了,数据就会丢失。您也可以为应用程序的每次安装生成一个唯一的ID,但它需要您在本地存储该ID,并且这将是跟踪。
本地加密,以防止读/篡改数据本质上是不安全的,因为你需要有一些重复的平均检索的关键。你会怎么做?如果您只是在应用程序中对其进行硬编码,则可以通过某些二进制文件读取器轻松进行检索。它不能位于名为'key.txt'的文件中,原因很明显。你可以在运行时使用一些复杂的算法来计算它,但是你总是需要在某个时刻将它加载到内存中,从某个地方可以很容易地找到它。
谢谢@lvella很有趣,我同意你对第二种方法的看法,我认为它不合适,我会看看我能用Windows的注册表做些什么,再次感谢你。 – Oumaya
当然不可能在计算机上保存某些东西而不留痕迹。一切都对root用户可见。
但是,如果你不想让别人去改变它,你可以对它进行加密,隐藏它,并将其设置为只读和根仅编辑权限。但不要让任何人发现这是不可能的。 (你是否想要制造病毒?)即使你放入BIOS,也有办法找到它。
@oumaya:大多数密码学的目标是使数据的查看非常困难,但并非不可能。请记住,加密越“重”,解密花费的时间就越多。 –
感谢您的时间,我的意思是在这里保存有关我的加密文件的路径和密码的数据,我想隐藏任何机构无法破解我的加密文件的信息。 – Oumaya
它与cpu寄存器有什么关系? – Dani
您希望*保存数据*而不留下痕迹* ..?我认为你需要澄清你的要求。 –
@LucTouraille和永久.. – texasbruce