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 Details

    • BiudPasswordEncoder

      public BiudPasswordEncoder()
  • Method Details

    • encode

      public String encode(CharSequence rawPassword)
      Кодирует пароль используя SHA1 + BASE64.
      Specified by:
      encode in interface org.springframework.security.crypto.password.PasswordEncoder
      Parameters:
      rawPassword - исходный пароль в открытом виде
      Returns:
      закодированный пароль (BASE64-encoded SHA1 hash)
    • matches

      public boolean matches(CharSequence rawPassword, String encodedPassword)
      Проверяет соответствие пароля хешу из базы данных.

      Для совместимости с оригинальным кодом обрабатывает возможные различия в формате BASE64 (переносы строк, пробелы).

      Specified by:
      matches in interface org.springframework.security.crypto.password.PasswordEncoder
      Parameters:
      rawPassword - исходный пароль в открытом виде
      encodedPassword - хеш пароля из базы данных (CS.OPERATOR.PASS)
      Returns:
      true если пароль соответствует хешу
    • upgradeEncoding

      public boolean upgradeEncoding(String encodedPassword)
      Проверяет, нуждается ли хеш в обновлении.

      Всегда возвращает false для сохранения совместимости с существующими паролями. Обновление алгоритма кодирования должно выполняться отдельно, при необходимости.

      Specified by:
      upgradeEncoding in interface org.springframework.security.crypto.password.PasswordEncoder
      Parameters:
      encodedPassword - хеш пароля из базы данных
      Returns:
      false — обновление не требуется