2016-08-08 5 views
0

Я пытаюсь создать свою первую страницу входа в качестве учебного упражнения.Простая проверка имени пользователя и пароля java

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

Я полный новичок с безопасностью и т. Д., Поэтому я не знаю, будет ли это безопасно или нет? Какова норма для небольших приложений? если этот метод не рекомендуется, то какая подходящая простая альтернатива?

EDIT Одно из возможных решений, если я могу заставить его работать.

String unpwfield; 
    unpwfield = userId.getText()+passwordfield.getText(); 
    if (BCrypt.checkpw(unpwfield, passwordhash)) 
     System.out.println("It matches"); 
    else 
     System.out.println(userId.getText()+passwordfield.getText()); 
+0

Это звучит хорошо для меня и является нормой для многих приложений. Просто убедитесь, что вы используете безопасный алгоритм хеширования. Как правило, эта информация будет записана в базу данных. –

+0

Я собирался создать файл здесь http://aes.online-domain-tools.com/ и попросить их использовать ключ как имя пользователя. Это недостаток безопасности, зная, что ключ является именем пользователя? –

+0

@ user1274820 Смотрите теги wiki для [tag: password-encryption] и [этот ответ] (http://stackoverflow.com/questions/2283937/how-should-i-ethically-approach-user-password-storage-for -later-plaintext-retrie/2287672 # 2287672), почему это ужасная идея. – EJP

ответ

1

Для хранения паролей, вы будете хотеть использовать алгоритм хэширования медленно. Криптографические хеши слишком быстрые, и не замедляйте атакующего в автономном режиме. Например, bcrypt часто является наиболее подходящим алгоритмом для использования.

Bcrypt генерирует собственные соли, поэтому вам не нужно беспокоиться о безопасном способе их генерации.

Я бы не использовал имя пользователя в качестве соли. Соль заключается в том, чтобы избежать того же пароля, когда-либо хранящегося с таким же представлением байта, если он используется несколько раз.

Причины, по которым пользователь повторно использует один и тот же пароль, сразу же очевидно, что любой злоумышленник имеет видимость в хэш-данных пароля. Кроме того, если ваша система открыта, каждый экземпляр вашего приложения будет иметь хэши для пользователя admin, сохраненного точно таким же образом, что означает, что злоумышленники смогут предварительно создать таблицы радуги с admin в качестве соли.

Дополнительную информацию и рекомендации см. На сайте OWASP Cheat Sheet on Password Storage.

+0

Я начал смотреть на Bcrypt, и я хотел передать вместе имя пользователя и пароль вместе со случайной солью. Вы знаете, возможно ли это? Когда я пытаюсь, я получаю нулевой указатель. См. Edit .. –

+0

Bcrypt генерирует свою соль, вам не нужно передавать свои собственные, и для этого не было бы никакого преимущества. – SilverlightFox

+0

Я не знаю, как обращаться с проверкой правильности имени пользователя и пароля, поэтому я думал, что смогу объединить их вместе, прежде чем создавать хэш. Затем, когда я хочу сравнить их, я просто добавляю обе строки вместе и сравниваю. –

Смежные вопросы