这是我的第一个问题,希望您能帮助我。我正在用 Java 为 Bukkit 编写一个注册/登录插件。现在,当玩家加入我的服务器时,我希望他登录。我的插件必须检查播放器提供的密码是否正确。这是我到目前为止所做的代码。
问题是,我不知道如何做到这一点。有人可以解释一下如何做到这一点(也许只是用语言)?
String currln;
br = new BufferedReader(new FileReader("/plugins/LobbyLogin/passwd.crypt"));
while ((currln = br.readLine()) != null) {
password = currln;
}
String password = null;
String[] select = password.split(":");
String username = select[0];
String readed_pwd = select[1];
String alldata = username+readed_pwd;
P.S.:用户的密码保存在我创建的名为“passwd.crypt”的文件中。这是其中的一个示例字符串。
ExampleUser:cGFzc3dvcmQ=
密码以加密方式存储。
最佳答案
我建议使用 Bukkit 提供的 YAML 内置库来存储密码并将其与用户关联。然后,您可以使用简单的 FileConfiguration#getString(String) 来获取与用户关联的密码。
我不知道 SnakeYAML 的确切实现,但我假设它存储一个行号表来引用存储在该位置的 Node 来获取对象,而不是一个 BufferedReader 来读取每一行。这意味着大文件的性能提升。
还有两件事:除非您有硬件安全问题,否则为什么要加密密码?而且,我在运行时不进行 IO,在集合中保存对插件启动时初始值的引用,它比从文件读取磁盘更快。
关于Java/Bukkit (Minecraft) - 如果文件包含玩家名,则检查存储在 ":"之后的同一行中的密码并执行某些操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23372989/