Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用密码正确初始化对象流_Java_Stream_Encryption - Fatal编程技术网

Java 如何使用密码正确初始化对象流

Java 如何使用密码正确初始化对象流,java,stream,encryption,Java,Stream,Encryption,服务器 客户端(不同的应用程序): e 服务器应用程序中的Ois在创建流时会引发异常。如何修复它?当它没有被封装在密码流中时,一切都会工作 仅当创建新ObjectInputStream时,才会引发异常,但它会冻结10秒(超时),当达到超时限制时,会引发异常 例外情况: ncCipher.init(Cipher.ENCRYPT_MODE, secretKey); obj_out = newObjectOutputStream(new CipherOutputStream(socket.getOut

服务器

客户端(不同的应用程序):

e

服务器应用程序中的Ois在创建流时会引发异常。如何修复它?当它没有被封装在密码流中时,一切都会工作

仅当创建
新ObjectInputStream
时,才会引发异常,但它会冻结10秒(超时),当达到超时限制时,会引发异常

例外情况:

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)
java.io.ObjectInputStream$PeekInputStream.readFully上的
(ObjectInputStream.java:2298)
位于java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2767)
位于java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:798)
位于java.io.ObjectInputStream。(ObjectInputStream.java:298)

您需要使用两个不同的
密码
对象,一个用于加密,一个用于解密。请考虑您的<代码>密码> /COD>附加到 CyfPieltStudio的对象在您将其放入<代码>加密模式> /代码>。< /P>请提供更完整的代码片段。您是否有单独的desCipher对象,或者您可能正在重用不应该重用的对象?请提供更长的回溯。您的服务器和客户端是否正确地分为两个线程?也请耐心一点。我已经更新了代码,但我不知道如何正确格式化。很抱歉,不要重复使用
desCipher
对象!我猜它不能初始化为同时加密和解密!是时候让你向我们吐露发生了什么异常了。更新。很抱歉。对于两个不同的密码对象,没有任何更改。我也尝试过使用ENCRPT/DECRYPT模式的所有组合,但仍然是相同的。@user1306777 cipheriputstream需要在DECRYPT模式下使用密码。CipherOutputStream需要处于加密模式的密码。创建流时,您只需每次初始化一次。EJP仍然无法工作,否则我无法理解您的意思。我已经更新了产生异常的代码。
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)
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)