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