Похоже, что входная строка представляет 16 байтов, где каждый байт кодируется двумя шестнадцатеричными символами этой строки.
Напротив toByteArray(UTF_8)
кодирует строку в кодировке UTF-8, превращая каждый символ в один или несколько байтов. Когда вы конвертируете эти байты в base64, сначала вы получите более длинный результат, а во-вторых - это совершенно разные байты.
Полагаю, правильный способ преобразования входной шестнадцатеричной строки в байтовый массив:
val input = "263e5df7a93ec5f5ea6ac215ed957c30"
val bytes = input.chunked(2).map { it.toInt(16).toByte() }.toByteArray()
Затем вы кодируете эти bytes
в base64 как обычно.