0

サーバ

 decCipher.init(Cipher.DECCRYPT_MODE, secretKey);
     ois = new ObjectInputStream(new CipherInputStream(socket.getInputStream(),decCipher));
     encCipher.init(Cipher.ENCRYPT_MODE, secretKey);
     out = new ObjectOutputStream(new CipherOutputStream(socket.getOutputStream(),encCipher));

クライアント (別のアプリケーション):

e

ncCipher.init(Cipher.ENCRYPT_MODE, secretKey);
obj_out = newObjectOutputStream(new CipherOutputStream(socket.getOutputStream(),encCipher));
 decCipher.init(Cipher.DECRYPT_MODE, secretKey);
 obj_in = new ObjectInputStream(new CipherInputStream(socket.getInputStream(),decCipher)

サーバー アプリケーションの Ois は、ストリームの作成中に例外をスローしました。修正方法は?これが暗号ストリームにラップされていない場合、すべてが機能します。

の作成時だけに例外がスローされるのnew ObjectInputStreamではなく、10 秒間フリーズし (タイムアウト)、タイムアウト制限に達すると例外がスローされます。

例外:

at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2298)
    at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2767)
    at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:798)
    at java.io.ObjectInputStream.<init>(ObjectInputStream.java:298)
4

1 に答える 1

0

Cipher暗号化用と復号化用の2 つの異なるオブジェクトを使用する必要があります。CipherにアタッチされたオブジェクトCipherInputStreamを に配置した後のモードを考慮してくださいENCRYPT_MODE

于 2012-05-15T23:41:43.730 に答える