java.security.spec.InvalidKeySpecException:java.lang.RuntimeException:错误:0c0000b9:ASN.1编码例程:OPENSSL_internal:WRONG_TAG

时间:2019-04-29 06:59:31

标签: java android rsa public-key

我想在Android中将String转换为RSAPublicKey。我试过下面的代码,但它给出了异常。我想使用该键从键中提取模量和指数。

  String PUBLIC_KEY = "BgIAAACkAABSU0ExAAQAAAEAAQBJGj09Gbyl7BS/8MytvjBUUfaktW984VHHW4lSI9y2OwaeOq4qqSD6IOHU9HL/QtwZ+wELq28eAOQSnr11hifMf6zWjIsCBHOEpLNJjL3wxjl7dUBEGMJOeZj2rmcf8v7lP/rpAtO/G8wKXhAIKLIFxcChkXwQKbQbHQ/FtX2bwg==";


  byte[] keyBytes = DatatypeConverter.parseBase64Binary(PUBLIC_KEY);
  X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);
  KeyFactory keyFactory = KeyFactory.getInstance("RSA");
  PublicKey pubKey = keyFactory.generatePublic(keySpec);

异常

java.security.spec.InvalidKeySpecException: java.lang.RuntimeException: error:0c0000b9:ASN.1 encoding routines:OPENSSL_internal:WRONG_TAG
at com.android.org.conscrypt.OpenSSLKey.getPublicKey(OpenSSLKey.java:295)
at com.android.org.conscrypt.OpenSSLRSAKeyFactory.engineGeneratePublic(OpenSSLRSAKeyFactory.java:47)
at java.security.KeyFactory.generatePublic(KeyFactory.java:357)

Caused by: java.lang.RuntimeException: error:0c0000b9:ASN.1 encoding routines:OPENSSL_internal:WRONG_TAG
at com.android.org.conscrypt.NativeCrypto.d2i_PUBKEY(Native Method)
at com.android.org.conscrypt.OpenSSLKey.getPublicKey(OpenSSLKey.java:293)
... 20 more

java.lang.RuntimeException: error:03000070:bignum routines:OPENSSL_internal:NO_INVERSE
at com.android.org.conscrypt.NativeCrypto.RSA_public_encrypt(Native Method)
at com.android.org.conscrypt.OpenSSLCipherRSA.engineDoFinal(OpenSSLCipherRSA.java:268)
at javax.crypto.Cipher.doFinal(Cipher.java:2056)

0 个答案:

没有答案