Если у вас был действующий ключ publi c SECP-256k1 в кодировке Base64, следующий код позволил бы вам получить адрес Ethereum с помощью Web3j.
String encodedKey = "MFYwEAYHKoZIzj0CAQYFK4EE123456789n9DSxZh3wfq0BIL5LDF5B54e07bxFiKc89K/GaKj4qrGC/Mb/KnakQBrN4khMQHLnxm7TjaxXQPxtJMV5b+A==";
byte[] decoded = Base64.getDecoder().decode(encodedKey);
String address = Keys.getAddress(Numeric.toHexString(decoded));
Однако, как указано в комментарии, похоже, что входной закодированный ключ - это не 128-битный ключ publi c, а сертификат X.509. Следовательно, вам нужно будет сделать что-то в этом роде:
String encodedKey = "MFYwEAYHKoZIzj0CAQYFK4EE123456789n9DSxZh3wfq0BIL5LDF5B54e07bxFiKc89K/GaKj4qrGC/Mb/KnakQBrN4khMQHLnxm7TjaxXQPxtJMV5b+A==";
byte[] decoded = Base64.getDecoder().decode(encodedKey);
CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
Certificate cert = certFactory.generateCertificate(new ByteArrayInputStream(decoded));
// TODO: Figure out how to convert this PublicKey into a byte array or BigInteger
byte[] publicKey = cert.getPublicKey();
String address = Keys.getAddress(Hex.toHexString(publicKey));
Также стоит упомянуть, что инструмент командной строки OpenSSL также может быть очень полезен для преобразования сертификатов в разные форматы.