Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何使文件对用户不可访问,但对我的程序可访问?_Ruby_File - Fatal编程技术网

Ruby 如何使文件对用户不可访问,但对我的程序可访问?

Ruby 如何使文件对用户不可访问,但对我的程序可访问?,ruby,file,Ruby,File,我现在正在制作一个小游戏,希望用户能够保存他们的角色,这些角色很可能存储在一个文本文件中。是否有任何方法可以使windows资源管理器中的用户无法访问此文本文件或您所看到的内容,从而使保存篡改变得不可能(或至少更难),但是我的程序也可以访问吗?除非您的游戏或守护进程以玩家的windows帐户无权访问的其他用户的身份运行,否则您的请求在功能上是不可能的。通常情况并非如此,因为玩家可能拥有对自己计算机的管理员访问权限。据我所知,如果没有保存密钥的外部服务,就无法从精明的root/管理员用户那里完全保

我现在正在制作一个小游戏,希望用户能够保存他们的角色,这些角色很可能存储在一个文本文件中。是否有任何方法可以使windows资源管理器中的用户无法访问此文本文件或您所看到的内容,从而使保存篡改变得不可能(或至少更难),但是我的程序也可以访问吗?

除非您的游戏或守护进程以玩家的windows帐户无权访问的其他用户的身份运行,否则您的请求在功能上是不可能的。通常情况并非如此,因为玩家可能拥有对自己计算机的管理员访问权限。据我所知,如果没有保存密钥的外部服务,就无法从精明的root/管理员用户那里完全保护文件

您可以采取一些步骤来降低更改文件的难度:保存文件,然后生成校验和、md5、sha2,或者使用其他哈希函数对文件进行哈希。然后将散列存储在单独的文件中(或将其固定在您编写的文件的末尾)

读取文件时,通过相同的哈希函数运行所读取的内容,并确保哈希与存储在文件中的哈希相同


这当然可以被精明的用户入侵,但这是阻止人们干扰游戏文件的一个非常好的方法

以二进制形式存储会使其更难。为了进一步阻止人们,您可以始终使用简单的加密/解密算法使文件中的数据不可读。同样,一个精明的root用户如果在你的计算机上,总是可以获得你用于加密的私钥,但这将是相当困难的。这就是我害怕的,是的。谢谢你的帮助!