我已经与我的服务器创建了一个 ssl 套接字连接。服务器向我发送 RC4 密钥,我使用该密钥创建密码并将其绑定到现有套接字的输入和输出流。尝试从输入流中读取时出现以下错误:
javax.net.ssl.SSLProtocolException:读取错误:ssl=0x32fbf8:SSL 库失败,通常是协议错误
是否有可能解密无法正常工作或 RC4 密钥密码不正确。这种错误的原因是什么。我在 android 2.3.3 上的应用程序中执行此操作。
还有一个查询,android 2.3.3 是否支持 sslv23(openssl) 。如果是这样,如何实例化相同的?(在 Windows 客户端中,我使用 rc4 键设置会话上下文,它工作得很好)
我是 java 和 android 新手,来自 VC++ 背景。请专家和程序员就我的疑问赐教。我的代码如下:
sslContext = SSLContext.getInstance("TLS");
/* some code to initialize ssl context */
SSLSocketFactory sslSocketfactory = sslContext.getSocketFactory();
sock = (SSLSocket) sslSocketfactory.createSocket(host,port1);
sock.setSoTimeout(12000);
is = new DataInputStream(new BufferedInputStream(sock.getInputStream(),
16384));
os = sock.getOutputStream();
/* some more code using above mentioned is and os to recieve rc4 key and
write it into a byte array */
SecretKey key2 = new SecretKeySpec(reverserRc4InBytes, 0, reverserRc4InBytes.length, "RC4");
Cipher cipherOS = Cipher.getInstance("RC4");
cipherOS.init(Cipher.ENCRYPT_MODE, key2);
Cipher cipherIS = Cipher.getInstance("RC4");
cipherIS.init(Cipher.DECRYPT_MODE, key2);
cos = new CipherOutputStream(os,cipherOS);
cis = new CipherInputStream(is,cipherIS);