BCrypt обновляет библиотеку и ее содержимое - не сломает ли мой логин? - PullRequest
0 голосов
/ 10 января 2019

У меня есть старое унаследованное приложение, использующее Spring Security (3.1.0) для реализации BCrypt. Хеши имеют некоторый формат, например

$2a$10$Cas1.FrwwQ3...WqS1i31gHrk12J9YK

Для реализации кодера:

PasswordEncoder BCRYPT = new BCryptPasswordEncoder(BCRYP_ITERATIONS);

используется для создания хеша (для хранения в базе данных) и для сопоставления.

Мои вопросы:

  1. Если я просто поменяю BCRYP_ITERATIONS с 10 на 18, это нарушит мою регистрацию?
    Насколько я понимаю, BCrypt этого не делает - что касается сопоставления, он будет просто использовать значение итерации, которое хранится внутри самого хэша ($2a$10$). А для создания новых хэшей для хранения в базе данных используется новое значение.

  2. Если я обновляю библиотеку до недавней реализации, которая использует новую версию ($2b$) BCryprt - это нарушит мою регистрацию?
    Поскольку это как-то меняет метод, я бы сказал, да - это правда?

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Обновление Spring Security не должно нарушать вашу регистрацию, поскольку последний снимок Spring Security 5.2 по-прежнему поддерживает $2a, см. BCryptPasswordEncoder:

Реализация PasswordEncoder, которая использует функцию сильного хеширования BCrypt. Клиенты могут по желанию предоставить «версию» ($ 2a, $ 2b, $ 2y) и «силу» (a.k.a. обходы журнала в BCrypt) и экземпляр SecureRandom. Чем больше параметр прочности, тем больше работы (экспоненциально) потребуется для хеширования паролей. Значение по умолчанию - 10.

ни один из 18 журналов регистрации не должен нарушать вашу регистрацию, поскольку последний снимок Spring Security 5.2 по-прежнему поддерживает от 4 до 31 журнала, см. BCryptPasswordEncoder:

сила - бревна использовать от 4 до 31

0 голосов
/ 10 января 2019

1: если я просто поменяю BCRYP_ITERATIONS с 10 на 18 - это сломает мой логин? Из того, как я понимаю BCrypt, этого не произойдет - что касается сопоставления, он будет просто использовать значение итерации, хранящееся внутри самого хеша ($ 2a $ 10 $). А для создания новых хэшей для хранения в базе данных используется новое значение.

Да, вы правы. Это не нарушит существующие хеши паролей и будет принимать итерации от самого хешированного пароля, а не от значения BCRYP_ITERATIONS.

2: Если я обновляю библиотеку до последней реализации, которая использует новую версию ($ 2b $) BCryprt - это нарушит мою регистрацию? Поскольку это как-то меняет метод, я бы сказал, да - это правда?

Если вы измените с $2a$ на $2b$, это будет лишь незначительное изменение версии. Это означает, что это всего лишь исправления ошибок или небольшие улучшения безопасности и производительности, поэтому это не нарушит функциональность.

...