将String转换为PublicKey

时间:2017-07-10 17:29:29

标签: java android security public-key-encryption

我将公钥作为字符串从Web服务器传递到Android设备,其中密钥从字符串转换回公钥。在Android设备上我收到此错误

java.security.spec.InvalidKeySpecException: java.lang.RuntimeException: error:0c0000af:ASN.1 encoding routines:OPENSSL_internal:TOO_LONG

android类:

@Override
public void onCreate(Bundle savedInstanceState) {
   /*
    * Other code
    */
   PublicKey publicKey = KeyUtil.StringToPublicKey(publicKeyString);
}

关键课程:

Public class KeyUtil {

public static byte[] publicKeyToByteArray(PublicKey key) {
    return Base64.encode(key.getEncoded(), Base64.DEFAULT);
}

public static PublicKey byteArrayToPublicKey(byte [] array) throws NoSuchAlgorithmException, InvalidKeySpecException {
    X509EncodedKeySpec spec = new X509EncodedKeySpec(Base64.decode(array, Base64.DEFAULT));
    KeyFactory kf = KeyFactory.getInstance("RSA");
    return kf.generatePublic(spec); //Error is thrown here
}

public static PublicKey StringToPublicKey(String array) throws NoSuchAlgorithmException, InvalidKeySpecException {
    byte[] b = Base64.encode(array.getBytes(), Base64.DEFAULT);
    return byteArrayToPublicKey(b);
}
}

此错误仅发生在Android设备上,我能够将代码转换为字符串并将其从字符串转换为PublicKey,而java中没有任何问题。

我无法弄清楚如何在Android设备上将字符串转换为publicKey而不会出现错误。帮助很大程度上被占用了。

0 个答案:

没有答案
相关问题