LibGDX - 使用 'Preferences' 安全存储高分
LibGDX - Storing highscore with 'Preferences' safely
我找不到将游戏高分存储在受密码保护的文件中的方法。
我不希望玩家进入 .prefs/ 更改高分并用它加载游戏。
我可以通过加密来使更改值变得困难,但这并不是防止玩家随机使用不同加密值和正确格式的可靠方法。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<entry key="highScore">4</entry> Not encrypted
<entry key="lGTlMAdWzXQaem8c78FMow==">NiGac2LEgYO8uo0wkiKpasdLA==</entry> Encrypted
</properties>
恐怕如果玩家有足够的决心,您存储在本地的任何数据都容易被黑客入侵。即使您加密了整个文件(例如将其设为二进制文件),有决心的人也可以生成多个高分文件并进行比较。
如果玩家可以分享高分(比如有一些自夸的因素),那么我建议你采用客户端-服务器模型并将高分远程存储在玩家无法修改的数据库中。
如果高分保存在本地,那么我认为可能不值得对文件进行防篡改。如果他们想夸大自己的私人分数而不是实际赚取它,那就让他们吧。你的时间最好花在开发一个很棒的新游戏机制上。
综上所述,解决该问题的另一种方法不是使文件防篡改,而是检测文件何时被篡改。您可以通过偷偷摸摸的方式来做到这一点,例如跟踪校验和 - 如果校验和与高分文件不匹配,您就知道它已被篡改并在您的游戏中添加 'cheater' 个彩蛋。
我找不到将游戏高分存储在受密码保护的文件中的方法。
我不希望玩家进入 .prefs/ 更改高分并用它加载游戏。
我可以通过加密来使更改值变得困难,但这并不是防止玩家随机使用不同加密值和正确格式的可靠方法。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<entry key="highScore">4</entry> Not encrypted
<entry key="lGTlMAdWzXQaem8c78FMow==">NiGac2LEgYO8uo0wkiKpasdLA==</entry> Encrypted
</properties>
恐怕如果玩家有足够的决心,您存储在本地的任何数据都容易被黑客入侵。即使您加密了整个文件(例如将其设为二进制文件),有决心的人也可以生成多个高分文件并进行比较。
如果玩家可以分享高分(比如有一些自夸的因素),那么我建议你采用客户端-服务器模型并将高分远程存储在玩家无法修改的数据库中。
如果高分保存在本地,那么我认为可能不值得对文件进行防篡改。如果他们想夸大自己的私人分数而不是实际赚取它,那就让他们吧。你的时间最好花在开发一个很棒的新游戏机制上。
综上所述,解决该问题的另一种方法不是使文件防篡改,而是检测文件何时被篡改。您可以通过偷偷摸摸的方式来做到这一点,例如跟踪校验和 - 如果校验和与高分文件不匹配,您就知道它已被篡改并在您的游戏中添加 'cheater' 个彩蛋。