Я использую у себя такой алгоритм: строку кодирую в base64, потом использую две строки с перемешанными символами A-Za-z0-9+/=. В кодированной строке заменяю символы из первой строки на соответствующею позицию во второй строке. Алгоритм простой, возможно тут что-то похожее.
Еще в base64 нет символов _- обычно для передачи в http запросах используют -_~ вместо +/=. Судя по строкам там заменили только + и /.