Base64Encoder обрезает последние 4 символа строки
Изменить Полностью измененный вопрос после обнаружения проблемы в другом месте приложения.
Я работаю над клиентом Heroku во Flex и сейчас пытаюсь создать инструмент аутентификации. Heroku использует базовую HTTP-аутентификацию, поэтому я настроил свой класс User для хранения электронной почты и пароля и предоставил метод, который будет возвращать строковое представление в кодировке base64 электронной почты и пароля, разделенных двоеточием. Однако кодировщик обрезает последние 4 символа в строке (проверяется путем кодирования той же строки через кодировщик openssl, встроенный в *Nix. Код, который я использую для кодирования значений, выглядит следующим образом:
public function getAuthString():String{
var encoder:Base64Encoder = new Base64Encoder();
encoder.insertNewLines = false;
encoder.encode(email + ':' + password);
trace(email + ':' + password);
trace(encoder.toString());
return encoder.toString();
}
Трассировка электронной почты и пароля вместе верна, но encoder.toString()
call возвращает строку длиной 4 символа (45 символов вместо 49).
Кто-нибудь еще сталкивался с этой проблемой раньше? Если да, то как ты это исправил?
1 ответ
Реализация ActionScript работает как положено. Реализация openssl предполагает новую строку. Дополнительные четыре символа, которые вы видите, являются символом новой строки.