Страницы

Поиск по вопросам

четверг, 13 февраля 2020 г.

Безопасное кодирование байт в строку типа base64 или base58

#c_sharp #base64


Какие в c# есть варианты кодирования последовательности байт в строковую форму, кроме
base64?

Вариант с base64 устраивает почти всем, но у него в символах алфавита используется
несколько неудобных знаков. Мне мешает символ '=', ещё на википедии упоминается, что
возможны проблемы с передачей base64-кодированной строки в url.

Как возможный вариант замены рассматриваю base58, которая упоминается там же на википедии
и которая используется в некоторых биткоин-прокотолах. У неё на выходе возможны только
варианты букв и цифр. Жаль, что в C# включили именно base64, а не base58, придётся
подключать какой-нибудь пакет.

Есть ли какие-то ещё варианты? Есть ли допустим base32 или base16?
    


Ответы

Ответ 1



Просто в голову пришла вот такая мысль var str = "Hello, World!"; var encoded = HttpUtility.UrlEncode( Convert.ToBase64String(Encoding.Default.GetBytes(str))); Console.WriteLine(encoded); var decoded = Encoding.Default.GetString( Convert.FromBase64String(HttpUtility.UrlDecode(encoded))); Console.WriteLine(decoded);

Ответ 2



Можно каждый байт кодировать как 16-ричное число (2 символа). Пример: 255 = 'FF' 165 = 'A5' 0 = '00' и т.д.

Комментариев нет:

Отправить комментарий