Как вы обрабатываете пароли для служб, когда пользователь вводит что-то, что лучше всего представлено в Unicode или какой-либо другой нелатинской кодировке символов?
В частности, можно ли использовать кириллический пароль в качестве пароля для Oracle? Что вы делаете, чтобы проверить пароль пользователя на соответствие механизму проверки подлинности Windows, если пароль указан как UTF-8?
У меня есть несколько идей о том, как с этим справиться в нашем коде, но я ищу совета от других, чтобы убедиться, что наше направление правильное.





Сама кодировка не должна создавать проблемы для шифрования, большинство алгоритмов работают с байтами, а не с символами. Единственная проблема, которая может быть проблемой: шифрование одного и того же пароля с разными кодировками может дать разные значения, если в пароле используются экзотические (не ASCII) символы. Однако преобразование пароля в фиксированную кодировку (например, UTF8) должно решить эту проблему.
У вас могут возникнуть проблемы с ограничениями длины механизмов аутентификации.
например Если система указывает максимальную длину 12 байтов, это может быть легко превышено пятью китайскими символами в utf-8, это не проблема как таковая, потому что четыре китайских символа должны иметь достаточную энтропию, но вы должны быть осторожны с ошибкой сообщения.
Другие проблемы могут возникнуть, если механизм аутентификации применяет такие правила, как «хотя бы по одному символу верхнего и нижнего регистра, пунктуации и числовых символов» - в некоторых языках отсутствуют символы верхнего / нижнего регистра, а в кодировке Unicode определены десятки символов, которые являются родными. говорящий будет думать о них как о числах, но не может быть распознан как таковые из-за плохо реализованного правила.