gpt4 book ai didi

java - 需要帮助创建内部日志文件

转载 作者:行者123 更新时间:2023-12-02 07:00:13 25 4
gpt4 key购买 nike

我有一个角色创建程序,用于我创建的角色扮演游戏,我想要一种方法来记录用户有机会编辑任何内容之前的初始滚动内容。我可以轻松地将信息转储到文本文件或类似的文件中,但我想要一些无法编辑的内容。我将字符信息保存在序列化的类对象中。以序列化形式(即在类对象内部)记录此信息的最佳方法是什么?我想到了一根绳子,但它可能会变得相当大。有更好的办法吗?

最佳答案

我只会创建一个对象来保存初始滚动值;不能超过几十个字节——用户要滚动多少次?您并没有真正解释这些卷代表什么以及它们的数量是否固定。

如果此信息只需在应用程序运行期间保留,则除此之外无需做更多事情。

如果此信息必须在程序执行之外保留,那么您必须以某种方式将其写入文件。如果真是这样,那就没有办法真正保护它了。几十年来,RPG 游戏作者一直在尝试这样做,但收效甚微。通常,解决方案是将玩家统计数据保存在用户无法访问的中央服务器上。 C.f. 暗黑破坏神所遭受的“欺骗”问题。

最好的选择是将“rolls”对象编写为可序列化的。将其序列化为字符串,将字符串转换为字节,使用隐藏在代码深处的加密 key 加密字节,然后将其写入文件。或者,如果您愿意,只需对字符串进行安全签名即可。这将允许用户查看统计文件,但不能修改它。

旧的Hack游戏用于将游戏状态保存到具有类似保护的文件中,并且效果非常好。他们在 Unix 系统上使用的一个技巧是使文件的 inode 号成为签名状态的一部分。这样,如果用户尝试复制文件(以备份正在进行的游戏),inode 编号将会更改,从而使文件失效。哈克对这些事情非常不宽容。如果它检测到修改的保存文件,你的角色当场死亡,游戏结束。

这里的问题是,无论您多么努力地隐藏它们,专门的用户都会对您的代码进行逆向工程并发现加密算法和 key ,或者(如果您只是对文件进行签名)简单地修改您的可执行文件,以便它不会费心检查签名。

没有更多关于您想要做什么的详细信息,这就是我能给您的尽可能多的建议。如果(按照惯例)您告诉我们您到目前为止所尝试过的操作,将会有所帮助。

关于java - 需要帮助创建内部日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16751036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com