使用Java将RSA公钥导出到PEM字符串

因此,我正在使用Spongy Castle(Android)为RSA公钥生成PEM编码的字符串,并将其上传到服务器。这是我目前正在做的:

    PublicKey publicKey = keyPair.getPublic();

StringWriter writer = new StringWriter();

PemWriter pemWriter = new PemWriter(writer);

pemWriter.writeObject(new PemObject("RSA PUBLIC KEY", publicKey.getEncoded()));

pemWriter.flush();

pemWriter.close();

return writer.toString();

现在,您可能已经知道,我不确定如何构造PemObject或是否有更简单的方法来执行此操作。

当使用Bouncy Case时,我曾经这样做过

    StringWriter writer = new StringWriter();

PEMWriter pemWriter = new PEMWriter(writer);

pemWriter.writeObject(keyPair.getPublic());

pemWriter.flush();

pemWriter.close();

return writer.toString();

但是由于某种原因,海绵城堡中不存在PEMWriter类

回答:

好的,这可能不是最聪明的方法(或者也许是?),但是在检查了PEMWriter此类的源代码之后,基本上是在后台进行此操作:

  1. 当调用writeObject它创建一个实例MiscPEMGenerator
  2. MiscPEMGenerator然后PemObject通过检查构造函数的参数类型来创建,以下摘录自MiscPEMGenerator的源代码:

        private PemObject createPemObject(Object o){

...

else if (o instanceof PublicKey)

{

type = "PUBLIC KEY";

encoding = ((PublicKey)o).getEncoded();

}

...

return new PemObject(type, encoding);

}

因此,从MiscPEMGenerator代码中可以看出,我唯一需要更改的就是将类型参数从“ RSA PUBLIC KEY”更改为“ PUBLIC

KEY”。这是最终代码。

    PublicKey publicKey = keyPair.getPublic();

StringWriter writer = new StringWriter();

PemWriter pemWriter = new PemWriter(writer);

pemWriter.writeObject(new PemObject("PUBLIC KEY", publicKey.getEncoded()));

pemWriter.flush();

pemWriter.close();

return writer.toString();

以上是 使用Java将RSA公钥导出到PEM字符串 的全部内容, 来源链接: utcz.com/qa/434124.html

回到顶部