Я пытаюсь преобразовать необработанный открытый ключ в PublicKey в формате String, используя X509EncodedKeySpec.Я создал это с помощью стороннего поставщика Gemalto.
Когда я сгенерировал открытый ключ, используя стандартную библиотеку Java, я преобразовал закодированную строку в PublicKey. Но когда я создал открытый и использовал библиотеку Gemalto.Я получаю исключение.
1004 * Строка base64PublicKey = "----- НАЧАТЬ RSA PUBLIC KEY ----- MIGJAoGBALWuuAJWAKOKWnMcbr1go52TiYGPB6wT2knLJnY840V3glq2IQ9iLQn8 STAFoNAoahfr / bsqNBGEoG1yT0wsIY1SbIjkD0I / A94jHQxwcTxXWP / mQxKg75t6 I / vJl3fSjcZgHg5JrtA + yeM5uCfHETbICBK4N54lxCzv0JaYgVk1AgMBAAE = ----- END RSAPUBLIC KEY ----- "
Удаление первой и последней строки
base64PublicKey = base64PublicKey.replaceAll (" \ n "," ") .replace (" ----- НАЧАТЬ RSAPUBLIC KEY ----- "," ") .replace (" ----- END RSA PUBLIC KEY ----- "," ");
После того, как в этой строке закодировать открытый ключ, будет выглядетькак:
MIGJAoGBALWuuAJWAKOKWnMcbr1go52TiYGPB6wT2knLJnY840V3glq2IQ9iLQn8STAFoNAoahfr / bsqNBGEoG1yT0wsIY1SbIjkD0I / A94jHQxwcTxXWP / mQxKg75t6I / vJl3fSjcZgHg5JrtA + yeM5uCfHETbICBK4N54lxCzv0JaYgVk1AgMBAAE =
* * 1014 X509EncodedKeySpec KeySpec = новый X509EncodedKeySpec (. Base64.getDecoder () декодирования (base64PublicKey));KeyFactory keyFactory = KeyFactory.getInstance ("RSA") PublicKey publicKey = keyFactory.generatePublic (keySpec);
Я должен иметь возможность получить PublicKey.Но я получаю исключение ниже: java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException: ошибка синтаксического анализа, не последовательность в sun.security.rsa.RSAKeyFactory.engineGeneratePublic (RSAKeyFactory.java:205) в java.security.KeyFactory.generatePublic (KeyFactory.java:334)