【问题标题】:java.rmi.MarshalException: cipheringjava.rmi.MarshalException:加密
【发布时间】:2011-11-12 17:17:18
【问题描述】:

当我尝试调用远程接口时出现此错误:

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);

处理完所有数据后

【问题讨论】:

    标签: java exception rmi


    【解决方案1】:

    问题到底是什么?错误很明显——您不能序列化 Cipher 类型。如果您查看此类型的 Javadoc,它会告诉您:

    为了创建一个 Cipher 对象,应用程序调用 Cipher 的 getInstance 方法,并传递请求的名称 对其进行改造。可选地,提供者的名称可以是 指定。

    因此,您可以传递一个转换字符串,而不是直接传递CipherString 是可序列化的,因此是“可远程的”)。

    【讨论】:

    • 谢谢,我明白了,我刚刚以两种方式创建了网络实例,并发送了字节数组和密钥:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    相关资源
    最近更新 更多