Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将字符串转换为公钥时获取公钥null_Java_Android - Fatal编程技术网

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();