Java 将字符串转换为公钥时获取公钥null
此行返回空值Java 将字符串转换为公钥时获取公钥null,java,android,Java,Android,此行返回空值 public static PublicKey strToPublicKey(String s) { PublicKey pbKey = null; try { BufferedReader br = new BufferedReader(new StringReader(s)); PEMReader pr = new PEMReader(br); Object obj = pr.readObject();
public static PublicKey strToPublicKey(String s) {
PublicKey pbKey = null;
try {
BufferedReader br = new BufferedReader(new StringReader(s));
PEMReader pr = new PEMReader(br);
Object obj = pr.readObject();
if (obj instanceof PublicKey) {
pbKey = (PublicKey) pr.readObject();
} else if (obj instanceof KeyPair) {
KeyPair kp = (KeyPair) pr.readObject();
pbKey = kp.getPublic();
}
pr.close();
} catch (Exception e) {
Log.d("CIPHER", e.getMessage());
}
return pbKey;
}
当我尝试将服务器密钥转换为rsa公钥类型时
它在此行返回空值
pbKey = (PublicKey) pr.readObject();
Cipher cipher = Cipher.getInstance("RSA/None/OAEPWithSHA1AndMGF1Padding", "BC");
你的代码没有意义。你已经读过钥匙了。
instanceof
测试证明了这一点。您不应该读取另一个对象:您应该强制转换已读取的对象。您是否尝试使用调试器断点。是的,我在这一行pbKey=(PublicKey)pr.readObject()得到null;请检查下面的内容,它将公钥从base64字符串转换为。@PankajMundra他使用的是更高级别的API,而不仅仅是假定为RSA的API,没有理由不这样做。此读取器用于OpenSSL使用的格式的“X509证书、PKCS8编码密钥和PKCS7对象”。您能确认输入字符串是其中之一吗?(或者最好给出一个输入字符串的示例?)
pbKey = (PublicKey) pr.readObject();