#encoding #passwords
#кодирование #пароли
Вопрос:
Допустим, я хэширую пароли с помощью StandardPasswordEncoder, который использует SHA-256 и 8-битные случайные символы в качестве соли, и сохраняю его в базе данных (например, для регистрационной формы).
И затем я проверяю это с помощью
<security:password-encoder hash="sha-256" >
</security:password-encoder> (for login form)
Знает ли этот последний, что первый закодировал его таким образом, что соль составляет 8 байт случайно сгенерированной соли? И даже если он знает, как он узнает, какую соль применить, чтобы получить тот же хэш?
Или, может быть, я полностью сбился с пути, и стандарт SHA-256 уже предполагает, что внутри должна быть строго 8-битная соль для хеширования?
Спасибо,
Ответ №1:
Решаемая проблема, я не буду вдаваться в подробности, но лучше используйте org.springframework.security.authentication.encoding.ShaPasswordEncoder ,
<bean id ="passwordEncoder" class="org.springframework.security.authentication.encoding.ShaPasswordEncoder" >
<constructor-arg value="256"/>
<property name="iterations" value="1024"/>
</bean>
и ссылайтесь на этот компонент из вашего контекста безопасности:
<security:password-encoder ref="passwordEncoder">
<security:salt-source user-property="username"/>
</security:password-encoder>
Комментарии:
1. Недостатком этого является то, что ShaPasswordEncoder реализует устаревший кодировщик паролей вместо более нового org.springframework.security.crypto.password. Кодировщик паролей