Как проверить, действителен ли пароль, если имя пользователя, зашифрованный пароль и соль хранились в MySQL?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Гость
 Как проверить, действителен ли пароль, если имя пользователя, зашифрованный пароль и соль хранились в MySQL?

Сообщение Гость »

Итак, у меня есть простое веб-приложение для входа и регистрации на Java. Мой регистрационный файл вставляет данные в базу данных MySQL следующим образом:

Код: Выделить всё

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String user_name = request.getParameter("name");
String email = request.getParameter("email");

// encrypt password
String pass = request.getParameter("pass");
byte[] salt = new byte[16]; // Use a cryptographically secure random number generator to generate the salt
new SecureRandom().nextBytes(salt);

// Hash the password with bcrypt
String hashedPassword = OpenBSDBCrypt.generate(pass.toCharArray(), salt, 12);

String mobile = request.getParameter("contact");
RequestDispatcher dispatcher = null;
Connection con = null;
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/LOGIN?useSSL=false", "username", "password");
PreparedStatement pst = con.prepareStatement("insert into users(user_name, salt, hashed_pass, email, mobile) values(?,?,?,?,?) ");
pst.setString(1, user_name);
pst.setBytes(2, salt);
pst.setString(3, hashedPassword);
pst.setString(4, email);
pst.setString(5, mobile);
}
...
В базе данных MySQL у меня есть таблица пользователей следующего вида:

Код: Выделить всё

create table users (
id int primary key auto_increment,
user_name varchar(50),
salt varbinary(16),
hashed_pass varchar(60),
email varchar(50),
mobile varchar(20)
);
Изначально перед хешированием пароля мой файл входа проверял данные следующим образом ( — это простой пароль, с которым пользователь регистрируется)

Код: Выделить всё

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String email = request.getParameter("username");
String pass = request.getParameter("password");
HttpSession session = request.getSession();
RequestDispatcher dispatcher = null;

Connection con = null;
PreparedStatement pst = null;

try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/LOGIN?useSSL=false", "username", "password");
String query = "select * from users where email = ? and pass = ?";
pst = con.prepareStatement(query);
pst.setString(1, email);
pst.setString(2, pass);
ResultSet rs = pst.executeQuery();

if (rs.next()) {
session.setAttribute("name", rs.getString("user_name"));
dispatcher = request.getRequestDispatcher("index.jsp");
} else {
request.setAttribute("status", "failed");
dispatcher = request.getRequestDispatcher("login.jsp");
}
dispatcher.forward(request, response);
rs.close();
}
....
Я не совсем уверен, как мне проверить, соответствует ли исходный пароль зашифрованному паролю в базе данных здесь. Я пробовал искать, но пока ничего не нашел. Может ли кто-нибудь мне помочь?

Подробнее здесь: https://stackoverflow.com/questions/782 ... -salt-were
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как извлечь зашифрованный ключ и зашифрованный контент из объекта CMS EnvelopedData в Java?
    Anonymous » » в форуме JAVA
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Как извлечь зашифрованный ключ и зашифрованный контент из объекта CMS EnvelopedData в Java?
    Anonymous » » в форуме JAVA
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • PHP: пытаюсь войти на мою страницу. Если мой пароль действителен, какой пароль есть в базе данных?
    Anonymous » » в форуме Php
    0 Ответы
    126 Просмотры
    Последнее сообщение Anonymous
  • Хэширование и соль паролей в C#
    Anonymous » » в форуме C#
    0 Ответы
    37 Просмотры
    Последнее сообщение Anonymous
  • Нужно ли мне хранить соль с помощью bcrypt?
    Anonymous » » в форуме JAVA
    0 Ответы
    34 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»