Ошибка генерации открытого ключа RSA: «ошибка: 0c0000be: процедуры кодирования ASN.1: OPENSSL_internal: WRONG_TAG» - PullRequest
0 голосов
/ 10 июля 2019

У меня есть метод, который должен генерировать открытый ключ RSA:

import android.util.Base64;
import java.io.IOException;
import java.security.KeyFactory;
import java.security.PublicKey;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.X509EncodedKeySpec;

...

private PublicKey generatePublicKey() throws IOException {
    try {
        String encodedPublicKey = "TUl...QUI="; // real content is hidden
        byte[] decodedKey = Base64.decode(encodedPublicKey, Base64.DEFAULT);
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        X509EncodedKeySpec keySpec = new X509EncodedKeySpec(decodedKey);
        return keyFactory.generatePublic(keySpec);
    } catch (InvalidKeySpecException e) {
        String msg = "Invalid key specification: " + e;
        throw new IOException(msg);
    }
}

Но он выдает исключение во время выполнения последнего оператора в блоке try:

InvalidKeySpecException: java.lang.RuntimeException: ошибка: 0c0000be: процедуры кодирования ASN.1: OPENSSL_internal: WRONG_TAG

Что здесь не так?

Вы можете попытаться отладить следующее encodedPublicKey:

TUlJQkNnS0NBUUVBNjFCam1mWEdFdldtZWduQkdTdVMrclU5c29VZzJGbk9EdmEzMkQxQXFod2R6aXdISU5GYQpEMU1WbGNyWUc2WFJLZmtjeG5hWEdmRkRXSExFdk5CU0VWQ2dKanRIQUdaSW01R0wvS0E4NktEcC9Dd0RGTVN3Cmx1b3djWHdEd295aW5tZU9ZOWVLeWg2YVk3MnhKaDdub0xCQnExTjBiV2kxZTJpKzgzdHhPQ2c0eVYyb1ZYaEIKbzhwWUVKOExUM2VsNlNteG9sM0Mxb0ZNVmR3UGdjMHZUbDI1WHVjTWNHL0FMRS9LTlk2cHFDMkFRNlIyRVJsVgpnUGlVV09QYXRWa3Q3K0JzM2g1UmFteGg3WGpCT1hldWxtQ3BHU3luWE5jcFovMDYrdm9mR2kvMk1scFFaTmhICkFvOGVheU1wNkZjdk51Y0lwVW5kbzFYOGRLTXYzWTI2WlFJREFRQUI =

...