code charset caracteres unicode utf-8 internationalization passwords

unicode - charset - I18n y contraseñas que no son US-ASCII, Latin1 o Win1252



utf 8 charset (2)

La codificación en sí no debería plantear un problema en el cifrado, la mayoría de los algoritmos operan en bytes, no en caracteres. Lo único que podría ser un problema es: cifrar la misma contraseña con diferentes codificaciones podría generar valores diferentes si se usan caracteres exóticos (no ASCII) en la contraseña. Sin embargo, la conversión de la contraseña a una codificación fija (como UTF8) debería resolver ese problema.

¿Cómo se manejan las contraseñas para los servicios cuando el usuario ingresa algo que está mejor representado en Unicode u otra codificación de caracteres no latinos?

Específicamente, ¿puede usar una contraseña cirílica como contraseña para Oracle? ¿Qué hace para verificar la contraseña de un usuario contra un mecanismo de autenticación de Windows si la contraseña se proporciona como UTF-8?

Tengo algunas ideas sobre cómo se debe manejar esto en nuestro código, pero estoy buscando consejos de otros para asegurarme de que nuestra dirección sea sólida.


Puede tener problemas con las restricciones de longitud de los mecanismos de autenticación.

Por ejemplo, si el sistema especifica una longitud máxima de 12 bytes, esto podría excederse fácilmente con cinco caracteres chinos en utf-8, esto no es un problema porque cuatro caracteres chinos deberían tener suficiente entropía, pero debe tener cuidado con errores de mensajes.

Pueden surgir otros problemas si el mecanismo de autenticación impone reglas como "al menos una mayúscula, minúscula, puntuación y caracteres numéricos": varios idiomas no tienen caracteres en mayúscula / minúscula y hay docenas de caracteres definidos en unicode que un nativo el hablante pensaría en números, pero puede no ser reconocido como tal por una regla mal implementada.