Java/Bukkit (Minecraft) - 如果文件包含玩家名,则检查存储在“:”之后的同一行中的密码并执行某些操作

Posted

技术标签:

【中文标题】Java/Bukkit (Minecraft) - 如果文件包含玩家名,则检查存储在“:”之后的同一行中的密码并执行某些操作【英文标题】:Java/Bukkit (Minecraft) - If file contains playername then check password which is stored in same line after a ":" and do something 【发布时间】:2014-04-29 18:53:48 【问题描述】:

这是我的第一个问题,希望您能帮助我。我正在用 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=

密码以加密方式存储。

【问题讨论】:

什么不起作用?如果您正在寻求帮助,您必须具体说明您的错误。 确定已编辑。编辑:“问题是,我不知道如何做到这一点。有人可以解释如何做到这一点(也许只能用文字)?”我没有错误。我只是在寻求进一步的帮助。 你不应该加密密码,只是加盐和散列。更安全。 谢谢大家,xTrollxDudex 的回答帮助了我。我现在从 YML 配置文件中读取密码。我的加密工作也很好。 【参考方案1】:

我建议使用 Bukkit 提供的 YAML 内置库来存储密码并将其与用户关联。然后您可以使用简单的 FileConfiguration#getString(String) 来获取与用户关联的密码。

我不知道 SnakeYAML 的确切实现,但我假设它存储了一个行号表来引用存储在获取对象的位置的节点,而不是一个 BufferedReader 来读取每一行。这意味着大文件的性能提升。

还有两件事:除非您有硬件安全问题,否则为什么要加密密码?而且,我在运行时不 IO,在集合中的插件启动时保持对初始值的引用,它比从文件中读取磁盘要快。

【讨论】:

你能试着写一个代码示例或类似的东西吗?提前致谢。 很高兴我能帮上忙 :)

以上是关于Java/Bukkit (Minecraft) - 如果文件包含玩家名,则检查存储在“:”之后的同一行中的密码并执行某些操作的主要内容,如果未能解决你的问题,请参考以下文章

如何创建Bukkit Minecraft服务器

minecraft怎么搭建bukkit服务器

minecraft你的主机中的软件中止了一个已建立的连接

Minecraft 1.12.2模组开发(二十三) 霰弹枪!

java 如何改变Minecraft玩家指南针的位置 - 19w12b minecraft snapshot / fabric api

Minecraft 插件 NoClassDefFoundError [重复]