0
現在從上一個問題我得到了NTLM握手的工作。現在,當我從字節[]轉換爲字符串時,我無法過濾掉空格。我的結果是這樣的:byte [] to String not working correctly
CHAR: A
CHAR:
CHAR: B
CHAR:
CHAR: C
USERNAME: A B C
這是生產這種輸出的代碼:我即使String.valueOf(t).isEmpty()
或String.valueOf(t).equals(" ")
檢查
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 auth = httpServletRequest.getHeader("Authorization");
String username = authService.getUserNameFromNTLM(auth.substring(5));
和字符串轉換爲字節[像這樣]:
byte[] token = Base64.getDecoder().decode(msg);
我需要的輸出是ABC。有人可以告訴我爲什麼我的程序錯了嗎?
你確定字節數組是編碼在ISO-8859-1而不是UTF-16嗎? – Henry
您是否嘗試過查看char的數值並將其與預期的空間數值進行比較?在你的IDE中設置一個斷點也可能會產生奇蹟。 –
@Henry我得到一個NTLM V3令牌喜歡這篇文章https://www.innovation.ch/personal/ronald/ntlm.html 我的令牌看起來是這樣的:TlRMTVNTUAADAAAAGAAYAHIAAAAYABgAigAAABQAFABAAAAADAAMAFQAAAASABIAYAAAAAAAAACiAAAAAYIAAFUAUgBTAEEALQBNAEkATgBPAFIAWgBhAHAAaABvAGQATABJAEcASABUAEMASQBUAFkArYfKbe/jRoW5xDxHeoxC1gBmfWiS5 + iX4OAN4xBKG/IFPwfH3agtPEia6YnhsADT – Nico