gpt4 book ai didi

java - 解密用户数组列表中找到的所有用户名?

转载 作者:行者123 更新时间:2023-12-01 11:39:10 25 4
gpt4 key购买 nike

我正在 Java 上开发一个简单的登录系统,但我无法解密存储在用户 ArrayList 中的所有用户名(Users.java 包含 int userId、String username 和 String password),以便我可以比较它们使用新注册的用户名检查重复项,如果用户名已存在,则通过服务器向客户端发送回 false boolean 值。

我不确定如何一次解密每个用户名?我已经在各个用户名上测试了我的解密方法,解密效果很好。到目前为止我尝试过的是......

一个高级 for 循环用于临时添加所有解密的用户名,另一个高级 for 循环用于遍历临时 ArrayList 并检查是否在该 ArrayList 中找到新的已解密用户名;

String dUsername = aes.decrypt(eUsername);            
boolean isRegistered = false;

List<String> temp = new ArrayList<>();
for (Users users : usersList) {
temp.add(aes.decrypt(users.getUsername()));
}

for (String usernames : temp) {
if (!usernames.equals(dUsername))
isRegistered = true;
}

这行不通。

eUsername 是加密的用户名,isRegistered 将根据用户名是否重复向客户端发送 true/false。我怎样才能获取 usersList ArrayList 中的所有用户名,并解密所有值,以便我可以将它们与解密的 eUsername (dUsername) 进行比较?可能吗?

最佳答案

这应该有效:

String dUsername = aes.decrypt(eUsername);
boolean isRegistered = false;

List<String> temp = new ArrayList<>();
for (Users users : usersList) {
temp.add(aes.decrypt(users.getUsername()));
}

for (String usernames : temp) {
if (usernames.equals(dUsername)) {
isRegistered = true;
break;
}
}

return !isRegistered;

注意循环中条件的否定以及结果在最后被否定。如果 userList 中有多个用户,显然总会有至少一个用户的条件 !usernames.equals(dUsername) 为 true,在这种情况下 isRegistered 将设置为 true 并且在找到实际重复项时永远无法返回。因此,您需要查找此列表中的重复项,因为它是一次性事件。
之后,您可以对结果取反以表明所检查的用户名是唯一的。

看来您通过迭代 usersList 成功解密了用户名。由于您只对查找一个重复项感兴趣(并且用户名应该是唯一的),因此您可以将这两个循环合并为一个以提高效率:

String dUsername = aes.decrypt(eUsername);
boolean isRegistered = false;

for (Users users : usersList) {
String uname = aes.decrypt(users.getUsername());
if (uname.equals(dUsername)) {
isRegistered = true;
break;
}
}

return !isRegistered;

关于java - 解密用户数组列表中找到的所有用户名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29685632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com