2017-02-15 6 views
0

Мне нужно эффективно хранить byte[] в размере JWT claim, в частности,.Эффективное хранение двоичных данных в полезной нагрузке JWT Частная претензия Значение

Есть ли что-нибудь более эффективное, чем преобразование byte[] в base64URL? т.е.

Microsoft.AspNetCore.WebUtilities.Base64UrlTextEncoder.Encode(arrToEnc); 

Конечная цель состоит в том, чтобы кодировать List<UInt16> таким образом, что каждая UInt16 не больше 2 байта (после нормального JWT декодирования).

Оценка: byte[] -> UTF8 String. т.е. System.Text.Encoding.UTF8.GetString(arrToEnc);

Это совершенно отдельное от того, как JWT, в общем использовании Base64 для их кодирований ...

Спасибо ..

+0

может сжимать содержимое, чтобы пронестись перед кодированием base64? Base64 добавляет 33% накладных расходов. Вероятно, сжатие больше – pedrofb

+0

Альтернативой является base85, но она только улучшает 7℅ по сравнению с base64, не является обычным явлением, и реализации не могут ее поддерживать. См. Http://stackoverflow.com/questions/1443158/binary-data-in-json-string-something-better-than-base64 Я предлагаю сжатие – pedrofb

+0

Я могу и буду использовать gzip. Я напишу кодировщик и декодер, так что необычно. Я думаю, что в конечном итоге решение зависит от кодировки «строки» в стоимости заявки. И я кодирую эту базу. – ttugates

ответ

1

Base64 добавляет 33℅ накладных расходов, но может быть меньше, в зависимости от содержания. Альтернативой является base85, но она только улучшает 7℅ по сравнению с base64, не является обычным явлением, и реализации не могут ее поддерживать. Это не проблема, если вы управляете кодировщиком и декодером. См. Binary Data in JSON String. Something better than Base64

Вы можете сжать содержимое. В худшем случае с базой 64 - 33%. Коэффициент сжатия, который вы получите, будет составлять около 30-40%, но JWT будет делать дополнительную кодировку base64 при сжатии, поэтому даже используя base85, у вас будет перегрузка на требуемом соотношении 1: 1

вы также можете добавить GZIP на сервер, то степень сжатия будет применяться в течение полного содержания JWT

Смежные вопросы