Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在开源代码中隐藏字符串?_Java_Obfuscation - Fatal编程技术网

Java 在开源代码中隐藏字符串?

Java 在开源代码中隐藏字符串?,java,obfuscation,Java,Obfuscation,我已经在一个Java项目上工作了一段时间,在公开下载之前,我想添加一个需要连接MySQL数据库的功能。我的问题很简单:如果代码是开源的,我如何将密码隐藏到数据库中?将数据库连接设置与代码分开存储。您可以将密码放入某种配置文件中,就像ini文件一样。在设置/安装阶段,从用户处获取密码,并通过代码或允许他们手动将其填充到配置文件中。据我所知,没有正确答案。您可以尽可能地混淆或隐藏它,但是如果密码或计算密码的方法在您的JAR中,那么持久且熟练的用户会找到它 有一个比我在这里给出的更好的答案: 我不太明

我已经在一个Java项目上工作了一段时间,在公开下载之前,我想添加一个需要连接MySQL数据库的功能。我的问题很简单:如果代码是开源的,我如何将密码隐藏到数据库中?

将数据库连接设置与代码分开存储。

您可以将密码放入某种
配置文件中,就像
ini
文件一样。在设置/安装阶段,从用户处获取密码,并通过代码或允许他们手动将其填充到配置文件中。

据我所知,没有正确答案。您可以尽可能地混淆或隐藏它,但是如果密码或计算密码的方法在您的JAR中,那么持久且熟练的用户会找到它

有一个比我在这里给出的更好的答案:

我不太明白。。。我想我应该提到我的代码是一个独立的JAR。我应该如何以一种不可读的格式存储它呢?将应用程序的配置与代码分开。当用户部署文件时,让他们提供配置。你不需要用这种方式进行任何模糊处理。比如,让用户导入一个单独的文件吗?如果可能的话,我更愿意将整个内容保存在一个文件中。不,给他们一些编辑配置的机制,让他们在部署应用程序时编辑配置。请注意,如果Java内置了某种配置系统,您可以使用它,而不必担心配置文件。你可以让Java运行时来处理这个问题。你想让代码的用户直接连接到你的数据库服务器,而不是他们自己设置的MySQL实例吗?你能详细说明这是什么功能吗?一个可能的替代解决方案是支持一个restful web服务,消费者可以连接并通过该服务进行控制,而无需向任何人公开您的数据库服务器吗?我有点困惑。如果我使用代码
preferences.put(“db_username”,username);preferences.put(“db_密码”,password)
,凭证是否仍会硬编码到二进制文件中?