Base64 - это, как правило, хороший путь. Это достаточно эффективно, и вам, как правило, не нужно беспокоиться о проблемах кодирования, так как результатом будет ASCII. Однако вам, вероятно, следует быть осторожным, если вы собираетесь использовать результат в URL-адресе - «обычный» Base64 не является URL-безопасным. (Существуют альтернативные кодировки, которые используют разные символы.)