-1

サーバーとのSSLソケット接続を作成しました。サーバーからRC4キーが送信され、そのキーを使用して暗号を作成し、既存のソケットの入力ストリームと出力ストリームにバインドします。入力ストリームから読み取ろうとすると、次のエラーが発生します。

javax.net.ssl.SSLProtocolException:読み取りエラー:ssl = 0x32fbf8:SSLライブラリの障害、通常はプロトコルエラー

復号化が正しく機能していないか、RC4キー暗号が正しくない可能性があります。そのようなエラーの理由は何ですか。私はアンドロイド2.3.3のアプリでそれをやっています。

もう1つのクエリ、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);
4

2 に答える 2

0

あなたは任務を正しく理解していないと思います。SSL を使用するこの独自の暗号を実装する必要があります。

さもなければ、もっとまともな仕事を探すべきです ;-)

于 2012-07-20T00:50:07.373 に答える