С# Byte [] для Url Friendly String

Я работаю над быстрым генератором капчей для простого сайта, который я собираю, и я надеюсь передать зашифрованный ключ в URL страницы. Я мог бы, вероятно, сделать это как параметр строки запроса достаточно простым, но я надеюсь не слишком (просто потому, что ничто не убегает от строки запроса)...

Мой код шифрования создает байт [], который затем преобразуется с помощью Convert.ToBase64String (byte []) в строку. Однако эта строка по-прежнему не совсем понятна для URL, поскольку она может содержать такие вещи, как "/" и "=". Кто-нибудь знает о лучшей функции в .NET framework для преобразования массива байтов в дружественную строку?

Я знаю все о System.Web.HttpUtility.UrlEncode() и его эквивалентах, однако они работают только с параметрами строки запроса. Если я url кодирую '=' внутри пути, мой веб-сервер возвращает ошибку 400 Bad Request.

В любом случае, это не критическая проблема, но надеемся, что кто-то сможет дать мне приятное решение.

** EDIT: Чтобы быть абсолютно уверенным, что я делаю со строкой, я решил, что поставлю немного больше информации.

Байт [], который является результатом моего алгоритма шифрования, должен передаваться через какой-то алгоритм, чтобы превратить его в дружественную URL-строку. После этого он становится содержимым XElement, который затем используется как исходный документ для преобразования XSLT и используется как часть атрибута href для привязки. Я не верю, что преобразование xslt вызывает проблемы, поскольку то, что происходит на пути, похоже, является параметром строки закодированного запроса, но вызывает HTTP 400

Я также пробовал HttpUtility.UrlPathEncode() в строке base64, но это тоже не похоже на трюк (я все еще заканчиваю "/в моем url" ) **

Ответ 1

Вы ищете HttpServerUtility.UrlTokenEncode и HttpServerUtility.UrlTokenDecode, в System.Web.

Они кодируют в base64, заменяя потенциально опасные символы "+" и "/" на "-" и "_".

Документация MSDN

Ответ 2

Посмотрите System.BitConverter.ToString(myByteArray)

Удобно для кодирования одного типа для вещей, таких как хэши, но, как указано ssg, он не очень эффективен. Я бы не рекомендовал его для больших объемов данных.

Ответ 3

если вы работаете над быстрым кодом для простого сайта, который вы собираете вместе, почему вы пишете его с нуля, вместо того, чтобы использовать что-то, что было пробовал и тестировал как recaptcha?