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

334
22 июля 2021, 16:00

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

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

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

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

Answer 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);
Answer 2

Можно каждый байт кодировать как 16-ричное число (2 символа). Пример:

255 = 'FF'
165 = 'A5' 
0 = '00' 
и т.д.
READ ALSO
Оружие смотрит ниже курсора - unity 2d

Оружие смотрит ниже курсора - unity 2d

я разрабатываю игру с видом сверхуРешил сделать пушку, которая будет смотреть прямо на курсор

311
как реализовать консоль в c#

как реализовать консоль в c#

Захотелось сделать что-то типо консоли CMD, вообщем консольку с командами простую(Вводишь например time - выдает время

266
Почему происходит запись данных в таблицу из другой сессии, несмотря на то, что я установил блокировку чтения для таблицы?

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

У меня есть таблица t, которая содержит два столбца: name VARCHAR(20) NOT NULL, surname VARCHAR(20) NOT NULL

252
yii2 запрос INNER JOIN c массивом значений

yii2 запрос INNER JOIN c массивом значений

Есть таблица с квартирами и у каждой квартиры есть удобстваУдобства разные и разное количество их

206