所以我有这个代码
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的PEMReader
的情况下创建相当于上述代码的RSAPrivateKey
?
我希望,至少这个答案会对别人有所帮助。因为bouncy castle完全不支持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();
}