解密在用户 ArrayList 中找到的所有用户名?

Decrypt all usernames found in an ArrayList of users?

我正在 Java 上开发一个简单的登录系统,我无法解密存储在用户数组列表中的所有用户名(Users.java 包含 int userId、String username 和 String密码),以便我可以将它们与新注册的用户名进行比较以检查重复项,如果用户名已经存在,则通过服务器向客户端发送一个错误的布尔值。

我不确定如何一次解密每个用户名?我已经在个人用户名上测试了我的解密方法,解密工作正常。到目前为止我尝试过的是...

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

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) 进行比较?可能吗?

是否总是返回 "true" 显示用户已经注册?因为我想也许你想要:

if (usernames.equals(dUsername))   
        isRegistered = true;

这应该有效:

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),在这种情况下 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;

我完全不知道你为什么要加密用户名,但根本没有必要解密它们来比较它们。只需比较加密的用户名。