El hash es generado por SHA-256 de la contraseña y sal, codificado como una cadena Base64 con un conjunto de caracteres personalizado. Descubrí esto al reemplazar los caracteres no válidos ( _
y .
) con un A
y descodificarlo, y el resultado sale exactamente a 256 bits. Por supuesto, los datos de resultados son incorrectos porque no se conoce la codificación, pero el tamaño sigue siendo correcto.
Esto está respaldado por su documentación , que dice lo siguiente acerca de la tabla de usuarios:
- nombre de usuario -
NCHAR(32)
- Nombre para el usuario.
- sal -
BIGINT
- sal de 64 bits que utiliza el servidor para modificar la contraseña antes de aplicar el algoritmo de hash. El servidor puede usar sal para cambiar una contraseña de modo que dos usuarios con la misma contraseña no tengan la misma contraseña hash en la base de datos. Salt mejora la seguridad porque evita la adivinación de contraseñas.
- hashed_password -
VARCHAR(128)
- una contraseña codificada en sha-256 y codificada en base 64.
- hash_type -
CHAR(16)
- Tipo de algoritmo de hash utilizado. Actualmente se utiliza el algoritmo SHA-256.
- actualizado -
DATETIME YEAR TO SECOND {TIMESTAMP}
- N / A
- indicadores -
INTEGER
- indicadores utilizados para almacenar cierta información de la cuenta (como el bloqueo de la cuenta).
- min_change -
INTERVAL DAY(7) TO SECOND
- N / A
- max_change -
INTERVAL DAY(7) TO SECOND
- N / A
- inactivo -
INTERVAL DAY(7) TO SECOND
- N / A
- ac_expire -
DATETIME YEAR TO SECOND
- N / A
Lamentablemente, no hay una manera fácil de saber cómo se calcula el hash a partir de la contraseña y el salt, o qué conjunto de caracteres base64 utilizan. No parece estar documentado. Probablemente tendría que instalar Informix e realizar ingeniería inversa de forma manual.