サーブレットm currently having an intense problem.
I can
を使用しているクライアントに対して個別のセッションを作成できるようです。
私のサーブレットの重要なポイントは、個々のセッションに diffie hellman 鍵交換を提供することです。これは意図したとおりに機能していますが、別のユーザーがトークンの追加ボタンを同時に押した場合。生成された以前の値は上書きされるため、私のサーバーは一度に 1 人だけにサービスを提供するように制限されています。
diffie hellman サーブレットを使用して、クライアント用に複数のセッションを作成するにはどうすればよいですか? 前もって感謝します。
以下は私のコードスニペットです。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession(false);
if(null == request.getRequestedSessionId())
{
//create new session
System.out.println("No session id found , generating a new session ID");
session = request.getSession(true);
System.out.println("session id generated is "+session.getId());
@SuppressWarnings("deprecation")
String encodedURL = response.encodeUrl("/MyServletProject/DHServlet");
System.out.println("res.encodeURL(\"/DHServlet\");="+encodedURL);
response.sendRedirect(encodedURL);
return;
}else
{
System.out.println("session id = "+request.getRequestedSessionId());
System.out.println("no redirect required");
}
processRequest(request,response);
}
My diffie hellman 鍵交換
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
// PrintWriter out2=response.getWriter();
DH getDH = new DH();
try {
System.out.println("Session id requested is "+request.getRequestedSessionId());
long pValue = getDH.getSafePrime();
long gValue = getDH.getGenValue(pValue);
System.out.println("pValue is "+pValue);
System.out.println("gValue us "+gValue);
long serverSK = getDH.generateSKA();
BigInteger safePrimeValue = BigInteger.valueOf(pValue);
BigInteger generatorValue = BigInteger.valueOf(gValue);
System.out.println("the safe Prime is "+safePrimeValue);
System.out.println("the generator value is "+generatorValue);
BigInteger serverPK = getDH.generatePkB(generatorValue, safePrimeValue, serverSK);
// System.out.println(publicKeyFromClient);
String getTimeOnServer = Time.getTime();
String SPValue = safePrimeValue.toString();
String genValue = generatorValue.toString();
String sPublicKey = serverPK.toString();
// long pkFromClient = Long.parseLong(publicKeyFromClient);
//BigInteger pkC = BigInteger.valueOf(pkFromClient);
System.out.println("the erver public key is "+sPublicKey);
out.print("1"+":"+getTimeOnServer+":"+genValue+":"+SPValue+":"+sPublicKey);
pkClient=sPublicKey.toString();
SpValue = SPValue.toString();
sCValue=Long.toString(serverSK);
} finally {
out.close();
}
}