Java 将字符串转换为公钥
我将公钥作为字符串从web服务器传递到android设备,在该设备中,公钥从字符串转换回公钥。在android设备上,我遇到了这个错误Java 将字符串转换为公钥,java,android,security,public-key-encryption,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(Bun
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设备上,我能够将代码转换为字符串,并从字符串转换为公钥,在java中没有问题
我不知道如何在android设备上将字符串转换为公钥而不出错。帮助是非常适当的 你比较过Java和Android中的编码公钥吗?有区别吗?你比较过Java和Android中的编码公钥吗?有区别吗?