0
質問は学問的性質よりむしろ...
私は次のアーキテクチャを持っています.Joboss ASの前にApacheサーバがあり、mod_jkを使用してお互いに会話します。 JSESSIONIDの生成にはどのようなアルゴリズムが使用されていますか、それに基づいていますか?何らかのハッシュアルゴリズム(おそらくmd5)の出力と似ているようですね。Apache mod_jkセッションIDの作成アルゴリズム
質問は学問的性質よりむしろ...
私は次のアーキテクチャを持っています.Joboss ASの前にApacheサーバがあり、mod_jkを使用してお互いに会話します。 JSESSIONIDの生成にはどのようなアルゴリズムが使用されていますか、それに基づいていますか?何らかのハッシュアルゴリズム(おそらくmd5)の出力と似ているようですね。Apache mod_jkセッションIDの作成アルゴリズム
TomcatのsessionIdを生成するためのコードスニペットです。私はTomcat 5.5.35のソースコードからそれを取り出しました。ソースコードhereがあります。 sessionIdは、hereにあるManagerBaseクラスによって生成されたようです。私はここで便利に使うためにManagerBaseからコードスニペットを追加しています。
これが役に立ちます。
幸運を祈る!
/**
* Generate and return a new session identifier.
*/
protected synchronized String generateSessionId() {
byte random[] = new byte[16];
String jvmRoute = getJvmRoute();
String result = null;
// Render the result as a String of hexadecimal digits
StringBuffer buffer = new StringBuffer();
do {
int resultLenBytes = 0;
if (result != null) {
buffer = new StringBuffer();
duplicates++;
}
while (resultLenBytes < this.sessionIdLength) {
getRandomBytes(random);
random = getDigest().digest(random);
for (int j = 0;
j < random.length && resultLenBytes < this.sessionIdLength;
j++) {
byte b1 = (byte) ((random[j] & 0xf0) >> 4);
byte b2 = (byte) (random[j] & 0x0f);
if (b1 < 10)
buffer.append((char) ('0' + b1));
else
buffer.append((char) ('A' + (b1 - 10)));
if (b2 < 10)
buffer.append((char) ('0' + b2));
else
buffer.append((char) ('A' + (b2 - 10)));
resultLenBytes++;
}
}
if (jvmRoute != null) {
buffer.append('.').append(jvmRoute);
}
result = buffer.toString();
} while (sessions.containsKey(result));
return (result);
}
https://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/catalina/session/ManagerBase.html – mplungjan