从PEM编码的字符串创建RSAPrivateKey

时间:2014-06-03 20:41:32

标签: android bouncycastle spongycastle

我有这个代码

private static RSAPrivateKey buildRSAPrivateKey(String privateKey) {
        PEMReader pemReader = new PEMReader(new StringReader(privateKey));
        try {
            KeyPair pair = (KeyPair) pemReader.readObject();
            RSAPrivateKey result = (RSAPrivateKey)pair.getPrivate();
            pemReader.close();
            return result;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

使用bouncycastle工作正常,但我需要在Android上运行,因此我导入SpongyCastle,但是海绵城堡没有PEMReader(显然PEMReader是在一个较旧的bouncycastle版本)

如何在不使用bouncycastle' s RSAPrivateKey的情况下创建与上述代码等效的PEMReader

1 个答案:

答案 0 :(得分:0)

我希望,至少这个答案会帮助其他人。因为充气城堡完全不支持android P。

Security.insertProviderAt(new org.spongycastle.jce.provider.BouncyCastleProvider(), 1);
StringReader reader = new StringReader(privateKeySerialized); /*privateKeySerialized -> RSA key*/
PublicKey pKey = null;
try {
  PemReader pemReader = new PemReader(reader);
  PEMParser pemParser = new PEMParser(pemReader);
  PEMKeyPair keyPair = (PEMKeyPair) pemParser.readObject();
  JcaPEMKeyConverter converter = new JcaPEMKeyConverter();
  pKey = converter.getPublicKey(keyPair.getPublicKeyInfo());
  pemReader.close();
} catch (IOException i) {
  i.printStackTrace();
}