JBOSS 4.2.3 кодирование по умолчанию при декодировании base64

#jboss-4.2.x

#jboss-4.2.x

Вопрос:

Я использую класс JBOSS 4.2.3 и UsernamePasswordLoginModule , который расширяется пользовательским классом, который переопределяет метод validatePassword . Этот метод имеет два параметра inputPassword и expectedPassword . Клиент отправляет Base64 encoded loginId:password на сервер, а сервер декодирует с помощью base64 . Сервер декодирует учетные данные с помощью iso-8859-1 (я проверил, просмотрев символы с ударением в онлайн-инструменте преобразования, и это было эквивалентно выводу iso, а не UTF-8). Поскольку iso не поддерживает международные символы, и мне нужно использовать UTF-8, но я не понял, где эта кодировка iso использовалась, если мы делаем Base64 decode . Я искал Base64 метод декодирования, но кодировка не была указана.

Мой вопрос заключается в том, есть ли у нас какой-либо механизм для установки кодировки в вышеупомянутом сценарии. Требование заключается в том, что клиент отправит UTF-8 data , и мне нужно декодировать с помощью UTF8 . Заранее спасибо.

Ответ №1:

Кодирование и декодирование строк в Base64 — это двухэтапный процесс:

[Кодировка] Строка -> байт[] -> Строка (в кодировке base64)
[Декодирование] Строка (в кодировке base64) -> байт[] -> Строка

Кодировку символов необходимо установить с помощью шагов, выделенных жирным шрифтом.

Для кодирования это означало бы выполнение:

 String s;
byte[] bytes = s.getBytes("UTF-8");
  

Для декодирования это было бы:

 byte[] bytes;
String s = new String(bytes, "UTF-8");