Class BiudPasswordEncoder
java.lang.Object
ru.pfr.common.biud.security.encoder.BiudPasswordEncoder
- All Implemented Interfaces:
org.springframework.security.crypto.password.PasswordEncoder
@Component
public class BiudPasswordEncoder
extends Object
implements org.springframework.security.crypto.password.PasswordEncoder
Кодировщик паролей для системы БИУД.
Реализует алгоритм SHA1 + BASE64, используемый в оригинальном DBUserRegistry:
MessageDigest SHA = MessageDigest.getInstance("SHA1");
BASE64Encoder encoder = new BASE64Encoder();
String p = encoder.encode(SHA.digest(password.getBytes()));
Этот кодировщик обеспечивает полную совместимость с существующими паролями в таблице CS.OPERATOR.PASS, закодированными через IBM WebSphere JAAS.
Отличия от стандартного BCryptPasswordEncoder:
- Не использует соль — каждый пароль хешируется одинаково
- Использует SHA1 вместо bcrypt
- Результат кодируется в BASE64
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionencode(CharSequence rawPassword) Кодирует пароль используя SHA1 + BASE64.booleanmatches(CharSequence rawPassword, String encodedPassword) Проверяет соответствие пароля хешу из базы данных.booleanupgradeEncoding(String encodedPassword) Проверяет, нуждается ли хеш в обновлении.
-
Constructor Details
-
BiudPasswordEncoder
public BiudPasswordEncoder()
-
-
Method Details
-
encode
Кодирует пароль используя SHA1 + BASE64.- Specified by:
encodein interfaceorg.springframework.security.crypto.password.PasswordEncoder- Parameters:
rawPassword- исходный пароль в открытом виде- Returns:
- закодированный пароль (BASE64-encoded SHA1 hash)
-
matches
Проверяет соответствие пароля хешу из базы данных.Для совместимости с оригинальным кодом обрабатывает возможные различия в формате BASE64 (переносы строк, пробелы).
- Specified by:
matchesin interfaceorg.springframework.security.crypto.password.PasswordEncoder- Parameters:
rawPassword- исходный пароль в открытом видеencodedPassword- хеш пароля из базы данных (CS.OPERATOR.PASS)- Returns:
- true если пароль соответствует хешу
-
upgradeEncoding
Проверяет, нуждается ли хеш в обновлении.Всегда возвращает false для сохранения совместимости с существующими паролями. Обновление алгоритма кодирования должно выполняться отдельно, при необходимости.
- Specified by:
upgradeEncodingin interfaceorg.springframework.security.crypto.password.PasswordEncoder- Parameters:
encodedPassword- хеш пароля из базы данных- Returns:
- false — обновление не требуется
-