0
これまでの質問から、私はNTLMハンドシェイクを動作させました。私がバイト[]から文字列に変換するとき、私は空白を除外できません。私の結果は次のようになります。byte [] to文字列が正しく動作しない
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[] token = Base64.getDecoder().decode(msg);
私は必要な出力がABCです。誰かが私の処置が間違っている理由を教えてもらえますか?
バイト配列がISO-8859-1でエンコードされ、UTF-16でエンコードされていませんか? – Henry
あなたはあなたのcharの数値を調べて、それを空間の予想される数値と比較しようとしましたか?また、IDEにブレークポイントを設定すると不思議に思うかもしれません。 –
@Henryは、私は私のトークンは次のようになります。この記事ではhttps://www.innovation.ch/personal/ronald/ntlm.html ようNTLM V3トークンを取得:TlRMTVNTUAADAAAAGAAYAHIAAAAYABgAigAAABQAFABAAAAADAAMAFQAAAASABIAYAAAAAAAAACiAAAAAYIAAFUAUgBTAEEALQBNAEkATgBPAFIAWgBhAHAAaABvAGQATABJAEcASABUAEMASQBUAFkArYfKbe/jRoW5xDxHeoxC1gBmfWiS5 + iX4OAN4xBKG/IFPwfH3agtPEia6YnhsADT – Nico