2016-10-10 2 views
0

Теперь из предыдущего вопроса я получил рукопожатие NTLM. Теперь, когда я конвертирую из байта [] в строку, я не могу отфильтровать пробелы. Мой результат выглядит следующим образом:байт [] для строки не работает правильно

CHAR: A 
CHAR: 
CHAR: B 
CHAR: 
CHAR: C 

USERNAME: A B C 

И это код производит следующий вывод:

username = new String(token, offset, length, "ISO-8859-1"); 
username = username.trim(); 

char[] test = username.toCharArray(); 
for (char t : test) 
{ 
    if (!Character.isWhitespace(t)) 
    { 
    System.out.println("CHAR: " + t); 
    } 
} 
System.out.println("USERNAME: " + username); 

Я даже проверил с String.valueOf(t).isEmpty() или String.valueOf(t).equals(" "). Все время это не так, и символы печатаются. Я даже использовал все сразу с || но все действительно «правильные».

Я получаю вход, как это из другого класса:

String auth = httpServletRequest.getHeader("Authorization"); 
String username = authService.getUserNameFromNTLM(auth.substring(5)); 

и преобразовать строку в Byte [], как это:

byte[] token = Base64.getDecoder().decode(msg); 

Выход мне нужно это ABC. Может кто-нибудь сказать мне, почему моя процедура неправильная?

+2

Вы уверены, что массив байтов закодирован в ISO-8859-1, а не UTF-16? – Henry

+2

Вы пробовали посмотреть числовое значение вашего символа и сравнить его с ожидаемым числовым значением пробела? Также установка контрольной точки в вашей среде IDE может творить чудеса. –

+0

@Henry я получаю маркер NTLM V3 как в этой статье https://www.innovation.ch/personal/ronald/ntlm.html Мой маркер выглядит примерно так: TlRMTVNTUAADAAAAGAAYAHIAAAAYABgAigAAABQAFABAAAAADAAMAFQAAAASABIAYAAAAAAAAACiAAAAAYIAAFUAUgBTAEEALQBNAEkATgBPAFIAWgBhAHAAaABvAGQATABJAEcASABUAEMASQBUAFkArYfKbe/jRoW5xDxHeoxC1gBmfWiS5 + iX4OAN4xBKG/IFPwfH3agtPEia6YnhsADT – Nico

ответ

1

Имя пользователя в сообщении кодируется в UTF-16LE, а не в ISO-8859-1.

То, что вы видите в настоящее время в строке, это символы NUL, возникающие из-за неправильного декодирования.

 Смежные вопросы

  • Нет связанных вопросов^_^