我正在开发桌面JavaFX应用程序,并计划将数据库和服务器连接详细信息放入Windows机器上隐藏文件夹中的配置文件中。
连接详细信息将包含密码。我知道这些不应该是纯文本,所以我应该如何加密它们以便只有应用程序可以读取它们?
我将尝试使用本机安装程序来保护源代码。 关于保护Java桌面应用程序的任何建议都会很棒,我真的不太了解安全性
答案 0 :(得分:0)
安全加密的基础是一个秘密不会存储在磁盘上,而只能由用户知道。如果你不能使用它,你只能尝试模糊处理,这就是所有的信息,但更难阅读。
在这里,您可以使用应用程序已知的密码加密数据,将密码存储在不同的变量中,然后在运行时:
但是这不会保护准备好分析Java字节码的用户的数据,只需要非常繁重的工作 - 这就是为什么它不是安全性而只是为了模糊。
答案 1 :(得分:0)
正常加密需要某个地方的密钥(文件),这并不太难。
然而,如果你想完全动态地完成它,没有跟踪这样的jar(zip格式)里面有一些密钥文件。然后使用
Random random = new Random(42_424_242);
带有数字的Random构造函数选择一个固定的随机序列,因此现在你有一个数字序列来加密/解密一个字节序列,比如用户xor-ing,
bytes[i] = (byte) (bytes[i] ^ random.nextInt(256));
不是无与伦比的,但需要黑客攻击。