gpt4 book ai didi

java - 为什么 SSL 的性能在 java 中的循环值中不同

转载 作者:太空宇宙 更新时间:2023-11-03 14:44:04 25 4
gpt4 key购买 nike

我想计算 ssl(客户端)与服务器建立连接并进行握手所需的时间。这是我的代码,它工作正常。

private boolean SslTlsConnection() throws IOException, NoSuchAlgorithmException, KeyStoreException, CertificateException, UnrecoverableKeyException, KeyManagementException {

KeyStore client = KeyStore.getInstance("JKS");
client.load(new FileInputStream(currentPath + "clientcert.keystore"), Password.toCharArray());

KeyStore trust = KeyStore.getInstance("JKS");
trust.load(new FileInputStream(currentPath + "myTrustStore.keystore"), Password.toCharArray());

KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(client, Password.toCharArray());

TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509");
tmf.init(trust);

SSLContext sc = SSLContext.getInstance("SSL");
TrustManager[] trustManagers = tmf.getTrustManagers();
sc.init(kmf.getKeyManagers(), trustManagers, new java.security.SecureRandom());

SSLSocketFactory ssf = sc.getSocketFactory();
sslsocket = (SSLSocket) ssf.createSocket(Properties.host, Properties.portNumber);

sslsocket.startHandshake();
System.out.println("Handshaking Complete");
System.out.println("Just connected to " + sslsocket.getInetAddress() + "\n");

transport = new IOTransport(sslsocket);
return false;
}


private void close(){
sslsocket.close();
}

我只是对性能感到好奇。我在一个循环中运行多个连接,我正在计算 ssl 需要进行握手的时间。我的问题是,与其他客户端相比,为什么客户端第一次连接 ssl 需要花费如此长的时间。我做错了什么吗?

for (int i = 1; i < loopvalue; i++) {
long elapseTime = System.currentTimeMillis();
SslTlsConnection()
long elapseTime = (System.currentTimeMillis() - elapseTime);
close();
}

我已经尝试过测试。这是结果

SSL_Execution_Time
First Execution Time 453ms
Second Execution Time 85ms
Third Execution Time 90ms

最佳答案

最初的 ssl 握手只发生一次。客户端和服务器就协议(protocol)(ssl vs tls)和密码达成一致,然后他们交换 key 。因此,在初始握手时会受到打击。之后唯一发生的事情就是使用已经交换的 key 进行加密和解密。

http://www.ibm.com/support/knowledgecenter/SSFKSJ_7.1.0/com.ibm.mq.doc/sy10660_.htm

关于java - 为什么 SSL 的性能在 java 中的循环值中不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40665102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com