2011-12-13 49 views
3

我试图在客户端和服务器之间进行加密通信。当服务器启动其公共和私人RSA密钥生成时。客户端向服务器请求其公钥,服务器向客户端发送密钥。服务器发送JSON格式公钥:Java:使用GSON序列化RSA公钥

Gson gson = new Gson(); 
String key = gson.toJson(pubKey); 

而且客户端我试图获得与关键:

Gson gson = new Gson(); 
PublicKey pubServerKey = gson.fromJson(responce_json, PublicKey.class); 

但所描述的here

所以我我得到异常m试图为pubServerKey定义一个InstanceCreator,就像下面的代码一样

class PublicKeyInstanceCreator implements InstanceCreator<PublicKey> { 
    public PublicKey createInstance(Type type) { 
     return new PublicKey(Object.class, 0L); 
    } 
} 

但是这个我得到的语法错误:无法实例化类型PublicKey

你能告诉我如何解决这个问题吗? 在这种情况下,Json是将RSA公钥从服务器传递给客户端的好方法吗?

可以感谢一些帮助,谢谢。

回答

2

我找到了解决方案,我的问题。而不是传递PublicKey到JSON我传递模数和公共指数在JSON中。在我通过使用KeyFactory获得客户端的PublicKey之后。更详细的描述是here