Java 如何在数据文件中存储安全信息

Java 如何在数据文件中存储安全信息,java,file-io,Java,File Io,在我的服务器客户机程序中,我想知道客户机是否是官方的(因此,没有修改)。为此,我想实现一个版本检查,版本应该存储在数据文件或其他文件中。问题是,如何安全地存储它?我不希望它能被任何类型的文本阅读器读取,如果有人修改客户端,它一定不能用于修改后的程序 我已经尝试过几种方法,比如使用数据输入/输出流,或者对象输入/输出流,但它们在记事本++之类的程序中都保持略微可见,并且仍然可以被任何非真实版本的客户端使用 有没有办法正确地执行此操作?从这个意义上说,不要依赖“版本检查”。取而代之的是,使用签名ja

在我的服务器客户机程序中,我想知道客户机是否是官方的(因此,没有修改)。为此,我想实现一个版本检查,版本应该存储在数据文件或其他文件中。问题是,如何安全地存储它?我不希望它能被任何类型的文本阅读器读取,如果有人修改客户端,它一定不能用于修改后的程序

我已经尝试过几种方法,比如使用
数据输入/输出流
,或者
对象输入/输出流
,但它们在记事本++之类的程序中都保持略微可见,并且仍然可以被任何非真实版本的客户端使用

有没有办法正确地执行此操作?

从这个意义上说,不要依赖“版本检查”。取而代之的是,使用签名jar,这可以保证jar不能被修改并且仍然运行,并在与服务器通信时使用清单文件中的签名字段来确定客户机是否为授权版本


在这个问题上,你可能会有更好的运气,但无论如何,我建议你给出一个具体的代码示例。版本检查有什么问题吗?它太容易被欺骗了。该签名确保您的jar根本没有被篡改,即使您的“VERSION.TXT”文件是相同的。此外,您可以使用签名生成的加密散列作为部署工件版本(我保证每个构建都会不同),以轻松确定“允许”哪些客户端,而不管“版本”通常是营销构造。您使用minecraft块作为您的化身,所以我假设您熟悉minecraft mods如何将新类添加到jar中。使用jar签名,用户无法修改jar的内容并仍然运行应用程序。只需简单的“版本检查”就可以了。好吧,我明白了。我现在就试着理解jar签名。