I18n и пароли, которые не являются US-ASCII, Latin1 или Win1252 - PullRequest
3 голосов
/ 10 декабря 2008

Как вы обрабатываете пароли для сервисов, когда пользователь вводит что-то, что лучше всего представлено в Unicode или какой-либо другой нелатинской кодировке символов?

В частности, можете ли вы использовать пароль кириллицы в качестве пароля для Oracle? Что вы делаете для проверки пароля пользователя по отношению к механизму аутентификации Windows, если пароль указан как UTF-8?

У меня есть некоторые идеи относительно того, как это должно быть обработано в нашем коде, но я ищу совет от других, чтобы убедиться в правильности нашего направления.

Ответы [ 2 ]

1 голос
/ 10 декабря 2008

У вас могут быть проблемы с ограничениями длины механизмов аутентификации.

например. Если система указывает максимальную длину в 12 байтов, это может быть легко превышено пятью китайскими символами в utf-8, это не является проблемой как таковой, потому что четыре китайских символа должны иметь достаточную энтропию, но вы должны быть осторожны с ошибкой messsages.

Могут возникнуть другие проблемы, если механизм аутентификации применяет такие правила, как «по крайней мере, по одному из прописных, строчных, пунктуальных и числовых символов» - в нескольких языках нет прописных и строчных букв, а в юникоде определены десятки что носитель языка будет думать как числа, но не может быть признан таковым из-за плохо реализованного правила.

1 голос
/ 10 декабря 2008

Само кодирование не должно создавать проблем при шифровании, большинство алгоритмов работают с байтами, а не с символами. Единственная проблема, которая может быть проблемой: шифрование одного и того же пароля с разными кодировками может привести к различным значениям, если в пароле используются экзотические (не ASCII) символы. Преобразование пароля в фиксированную кодировку (например, UTF8) должно решить эту проблему.

...