【问题标题】:Java: Serializing RSA public key with GSONJava:使用 GSON 序列化 RSA 公钥
【发布时间】:2026-01-02 02:45:01
【问题描述】:

我正在尝试在客户端和服务器之间进行加密通信。当服务器启动时,会生成其公钥和私钥 RSA。客户端向服务器询问其公钥,服务器将密钥发送给客户端。服务器以 JSON 格式发送公钥:

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

在客户端,我试图通过以下方式获取密钥:

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

但是我遇到了 here 描述的异常

所以我正在尝试为 pubServerKey 定义一个 InstanceCreator,如下面的代码所示

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

但这次我遇到语法错误:无法实例化类型 PublicKey

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

不胜感激,谢谢。

【问题讨论】:

    标签: java encryption rsa instance gson


    【解决方案1】:

    我找到了解决问题的方法。我没有将 PublicKey 传递给 json,而是在 json 中传递模数和公共指数。在我使用 KeyFactory 在客户端获取 PublicKey 之后。更详细的描述是here

    【讨论】: