skey.getEncoded ()
getEncoded
метод возвращает байтовый массив. Вы не можете просто создать строку из байтового массива, большинство байтов будет представлять непечатаемые символы.
Вы запрашиваете кодировку Base64 - это способ представления двоичных данных в виде печатного символа.
Вы можете использовать кодировщик Java Base64 по умолчанию
https://docs.oracle.com/javase/8/docs/api/java/util/Base64.html для кодирования и декодирования двоичных данных.
String encodedKey = Base64.getEncoder().encodeToString(skey.getEncoded());
Также используются другие реализации кодировщика, такие как commons-codec
Обратите внимание - в crypto все примитивы и операции (ключи, шифрование, дайджест, подпись и т. Д.) Работают поверх байтовых массивов, кодирование используется только для представления данных в виде печатаемой строки