2011-11-12 21 views
-5

我得到這個錯誤,當我嘗試調用一個遠程接口:java.rmi.MarshalException:加密

java.rmi.MarshalException: error marshalling arguments; nested exception is: java.io.NotSerializableException: javax.crypto.Cipher 

這些接口:

public interface Operacion extends Remote{ 

String operacionDesencripta(byte ciphertext[],Key key,Cipher cipher) 
     throws RemoteException; 

}

和我打電話它是這樣的:

rmiServidor.operacionDesencripta(ciphertext,key,cipher); 

Aft呃處理所有的數據

回答

2

究竟是什麼問題?錯誤非常明顯 - 您無法序列化Cipher類型。如果你對這種類型檢查出的Javadoc,它會告訴你:

爲了創建Cipher對象,應用程序調用密碼的 getInstance方法,並通過所要求的 改造,它的名字。可選地,提供者的名稱可以是 指定的名稱。

所以不是直接傳遞Cipher的,你可以通過一個轉換字符串,而不是(String是序列化的,因此「遠程處理」)。

+0

Thx我得到它我剛剛創建了兩種方式的網絡實例,只是發送字節數組和鍵:) –