Как решить - не могу использовать метод содержимого для значений int - PullRequest
0 голосов
/ 01 апреля 2019

Я пытаюсь выучить Java, и как часть задачи, над которой я работаю, пользователь зарегистрируется с помощью имени пользователя и пароля, которые затем хэшируются с использованием hashCode() Java и добавляются в текстовый файл в формеимени пользователя, пароля.

Теперь, когда пользователь входит в систему, я пытаюсь хэшировать его ввод и сравнить его с файлом .txt, чтобы убедиться, что введены правильные учетные данные.

IПервоначально это делалось путем поиска в файле .txt построчно, пока не появилось введенное имя пользователя, используя метод contains, с помощью которого я затем разделил строку на запятую, дав мне пароль для проверки введенного имени пользователя.

Как я мог сделать то же самое, но теперь с хэшированным значением int?Пожалуйста, ознакомьтесь с моим кодом для справки

Любая помощь будет принята с благодарностью!

В настоящее время я пытался преобразовать хешированное значение обратно в строку, а затем с использованием содержимого, которое не разрешено.

int UsernameHash = Username.hashCode();
int PasswordHash = Password.hashCode();

@SuppressWarnings("resource")
Scanner FileContent = new Scanner(new File("Users.txt"));

while (FileContent.hasNextLine()) {

    String Line = "";
    Line = FileContent.nextLine();

    if(Line.contains(UsernameHash)) {

        String FullLine = Line;
        String[] loginAuth = FullLine.split(",");
        String Pass = loginAuth[1];

    if(Pass.equals(PasswordHash)) {

        System.out.println("\n Thank You for logging in, please proceed!");

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

Прежде всего, просто чтобы поделиться некоторыми мыслями, я знаю, что вы просто пытаетесь изучать Java, но мы никогда не должны использовать хеш-код для проверки уникальности чего-либо.Поскольку хеш-код не уникален, будут имена пользователей и пароли, которые будут генерировать тот же хеш-код, и вы в конечном итоге позволите неавторизованному пользователю войти в систему.Другой для преобразования примитивных типов в объект String, вы можете использовать статический метод в классе String, String.valueOf (...).

int usernameHash = username.hashCode();  
int passwordHash = password.hashCode();

if (line.contains(String.valueOf(usernameHash)) {
        System.out.println("Match"); 
}
0 голосов
/ 01 апреля 2019

Если вы используете Integer вместо int, вы получаете доступ к методу toString, который позволяет сравнивать его значение со значением строки.

Попробуйте это,

 public static void main(String[] args) throws FileNotFoundException
    {
        @SuppressWarnings("resource")
        Scanner fileContent = new Scanner(new File("Users.txt"));
        Integer usernameHash = 42321;

        // Integer usernameHash = 42321;
        while (fileContent.hasNextLine())
        {

            String line = fileContent.nextLine();
            if (line.equals(usernameHash.toString()))
            {
                System.out.println("Match");
            }
        }
    }

Он также работает с

if(line.contains(usernameHash.toString())) {
        System.out.println("Match");
 }

Если вам нужно получить целочисленное значение из строки, вы можете сделать:

int array[] = new int [2];
String tempPassword = "55325";
array[1] = Integer.parseInt(temp);

Если это не то, что вы ищете, дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...