如何在Java源代码中隐藏硬编码密码

How to hide harded coded password in Java source code

本问题已经有最佳答案,请猛点这里访问。

我有一个程序可以连接到一个网站并对其内容进行更改。程序先登录,有权更改内容。现在我想把程序传递给其他人,这样他们就可以运行程序来帮助我完成任务。

程序只能在我的帐户下登录,我不想传递密码。我决定像这样硬编码密码:

1
2
3
String username ="username";
String password ="password";
login(username, password);

如何确保无法恢复密码?如果不可能的话,怎么做才能使恢复工作变得困难呢?或者什么更好的方法来解决我的问题?


How to make sure that it will be impossible to recover the password ?

如果无法恢复,程序也无法恢复,它将是无用的。

If it's impossible what to do to make the operation of recovering hard ?

是的,不要叫它密码。很简单的是,

1
String p ="kjasghfdkgasdfjlkasfljkahgdsfjhgdjsfh".substring(8, 15);

Or what the better way for my problem ?

相信那些帮助你的人。为帐户提供尽可能有限的访问权限来完成工作,并定期更改密码,这样当他们能够解决问题时,他们就不会有长时间的访问权限。


如果其他人在网站上有自己的账户,那么你可以避免泄露自己的账户。将用户名和密码放在与程序分开的配置文件中-大致如下:

1
2
3
4
5
6
Properties login = new Properties();
try (FileReader in = new FileReader("login.properties")) {
    login.load(in);
}
String username = login.getProperty("username");
String password = login.getProperty("password");

并创建一个文件login.properties,其中包含:

1
2
username=your_username_here
password=your_password_here

当你给其他人程序时,只给他们程序,而不是配置文件。向他们提供使用自己的用户名和密码创建文件的说明。


通过将密码存储在一个数组中并将数组连接到一个复杂的if语句、switch语句等系统来混淆它。越复杂越好。查看https://gist.github.com/jorgaterres/442094,了解一个使用hello world进行此操作的示例。另外,不要叫它"密码"…


您可以将密码以加密格式输入并在程序中解密,但不建议在程序中使用密码。

我假设这是通过ftp发生的?我建议您制作一个登录表单,让用户填写自己的登录信息。您可以为每个用户创建一个ftp帐户或其他帐户。

不管你多么想隐藏它。它还在那里,而且还会被找到。