我正在寻找一种方法来打开 JDBC 连接,而无需以纯文本形式指定我的数据库登录名和密码,因为应用程序将被分发,并且任何 Java 反编译器都会显示它们,从而允许用户轻松访问数据库。
有什么方法可以加密它们,或者将它们存储在其他地方吗?
看起来您想让 Android 应用程序直接与您的数据库对话?不要那样做。这是一个重大的安全漏洞。无论您如何加密您的凭证,您都必须在程序执行期间的某个地方显示您的纯文本,并且任何拥有调试器的人都可以看到这一点。正确的方法是在您的 Web 服务上使用 API 并从客户端调用该 API。所有数据库事务都应发生在受信任的 Intranet 中。
你为什么想做这个?通常,您的应用程序的业务端将拥有此信息并连接到 MySQL。在那里,用户无权访问任何代码。然后,您创建一个实际上可供公众访问的端点。在那里,您可以担心将用户名和密码传递给业务逻辑,而业务逻辑实际上可以直接访问您的数据库。
基本上,不要在服务器端以外的任何地方打开 jdbc 连接。它是一种安全措施。