我甚至不知道是否可能。
情景:
我的代码中有一个KeyStore的主密钥。 像
这样的东西private static final char[] pwd = "password".toCharArray();
我还必须在反编译时保护我的“密码”。 我的意思是,至少尝试使用JAPH
之类的东西我完全知道让我的密码安全且不可读是不可能的,但至少,我想尽可能努力。
答案 0 :(得分:1)
第一种方法是在单独的文件中分发密码,并在运行时通过Properties
API读取它们。简单易用。如果您添加一些base64编码,它将保护您免受脚本小孩。发布源代码只会暴露存储密码的方法。当然,代码和文件的泄漏仍然存在问题。
第二种方法非常相似。将密码保存为环境变量,并通过System.env
读取它们。在这种情况下要知道密码攻击者需要访问OS才能读取密码。这使它变得有点复杂。
第三种方法是两步密码。使用第二种方法存储的第一个密码是包含主密码的AES加密文件的密码。
在我们的项目中,我们使用第二种方法。如果代码泄露(某种程度上),它可以保护我们暴露密码,但是如果有人破坏了服务器安全性......那么我们将遇到比泄露密码更严重的问题。
PS。你可以尝试使用Honey Encription来让它变得更难。攻击者不会知道他有有效的密码或只是看起来像的东西。