BCrypt: есть ли способ вставить уже зашифрованные пароли в базу данных? - PullRequest
0 голосов
/ 26 декабря 2018

Я создаю веб-приложение с помощью Spring Framework (-> Java).По причинам тестирования я создал одного пользователя (с помощью оператора SQL).В настоящее время я работаю над шифрованием пароля, для которого я использую BCyrptPasswordEncoder.Мне интересно, если это возможно, создать этого первого пользователя с зашифрованным паролем.

Другими словами: могу ли я создать нового пользователя с помощью оператора SQL, используя зашифрованный пароль в качестве ввода?Если да, то как мне ввести закодированный пароль?

Я пробовал {Bcyrpt} [хеш], который я прочитал на каком-то сайте, но, похоже, это не сработало ...

ВСТАВИТЬ В ПОЛЬЗОВАТЕЛЯ (ИМЯ ПОЛЬЗОВАТЕЛЯ, ПАРОЛЬ) ЗНАЧЕНИЯ ('admin', 'passwd')

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Вы можете использовать аннотацию @PostConstruct для вызова кода после весенней загрузки и добавления пользователя с зашифрованным паролем.Но я призываю вас просто написать модульный тест.:)

  @Autowired
  private PasswordEncoder passwordEncoder;

  @Autowired
  private UserRepository userRepository;

  @PostConstruct
  public void addFirstUser(){
    User user = new User("email@gmai.com", passwordEncoder.encode("some-password"));
    userRepository.save(user);
  }
0 голосов
/ 26 декабря 2018

Сначала быстрое разъяснение терминологии.Пароли «хэшируются» с помощью bcrypt, а не «зашифрованы».Это означает, что это односторонний алгоритм (вы не можете отменить хэширование значения).

Значение, хранимое в базе данных, является хэшированным значением (например, $2a$10$Iewuj5kQFVnUaNbb6M0sAu6a1qbc5bqXAuyc.9fF4cR8xxIOhD0Da), а не паролем в виде простого текста.

Таким образом, все, что вам нужно сделать для тестового пользователя, - это сгенерировать хеш bcrypt для вставки в оператор INSERT.Либо пропустите его через BCryptPasswordEncoder, либо используйте онлайн-генератор bcrypt.

Например:

INSERT INTO USER(USERNAME, PASSWORD) VALUES ('admin', '$2a$10$Iewuj5kQFVnUaNbb6M0sAu6a1qbc5bqXAuyc.9fF4cR8xxIOhD0Da')
...