0
我是新手,請耐心等待... 我發現了一個JSP代碼片段,它從頭信息中讀出用戶數據,並將其更改一點點(做它的功能)。問題是,字符串作爲回報只是讓人比較好:我做了功課,並意識到它必須是某種字符集問題,因爲即使兩個字符串長度不匹配,但我找不到解。我怎樣才能將它們中的任何一個轉換成適當的格式?JSP解碼的字符串不等於普通字符串
<%@ page import="sun.misc.BASE64Encoder" %>
<%@ page import="java.io.*" %>
<%!
public String matchuser(String inputUser,HttpServletRequest request,HttpServletResponse response) throws java.io.IOException
{
String auth = request.getHeader("Authorization");
String s = "";
String retval = "kakukk";
//no auth, request NTLM
if (auth == null) {
response.setStatus(response.SC_UNAUTHORIZED);
response.setHeader("WWW-Authenticate", "NTLM");
return "no auth";
}
//check what client sent
if (auth.startsWith("NTLM ")) {
//System.out.println(auth);
byte[] msg = new sun.misc.BASE64Decoder().decodeBuffer(auth.substring(5));
int off = 0, length, offset;
//############################
if (msg[8] == 1)
{
off = 18;
byte z = 0;
byte[] msg1 =
{(byte)'N', (byte)'T', (byte)'L', (byte)'M', (byte)'S',(byte)'S', (byte)'P',
z,(byte)2, z, z, z, z, z, z, z,
(byte)40, z, z, z, (byte)1, (byte)130, z, z,
z, (byte)2, (byte)2, (byte)2, z, z, z, z, //
z, z, z, z, z, z, z, z};
// send ntlm type2 msg
response.setStatus(response.SC_UNAUTHORIZED);
response.setHeader("WWW-Authenticate", "NTLM "
+ new sun.misc.BASE64Encoder().encodeBuffer(msg1).trim());
return "dunno msg[8]";
}
else if (msg[8] == 3)
{
off = 30;
length = msg[off+17]*256 + msg[off+16];
offset = msg[off+19]*256 + msg[off+8];
s = new String(msg, offset, length);
// print computer name // out.println(s + " ");
}
else
{
return "done";
}
length = msg[off+9]*256 + msg[off+8];
offset = msg[off+11]*256 + msg[off+10];
//############################
s = new String(msg, offset, length);
if(s.equals(inputUser))
{
return "match";
}
else
{
return "not match:-" + s + "- input:-" + inputUser+"-";
}
}
return "final";
}
%>
<%
String fnc = matchuser("u099511",request,response);
out.println(fnc);
%>
在最後幾行,我用我的用戶(u099511)調用函數。從表面上看這兩個字符串看起來一樣,但他們不是,我不能對它們進行比較:
not match:-u099511- input:-u099511-
缺少什麼我在這裏? 任何幫助非常感謝!