6

所以我有这个代码

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是在较旧的 bo​​uncycastle 版本中)

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

4

1 回答 1

1

我希望,至少这个答案会对其他人有所帮助。因为充气城堡完全弃用了它对 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();
}
于 2019-12-09T10:23:50.173 回答