【发布时间】:2017-07-04 11:44:52
【问题描述】:
我需要有效地将 byte[] 存储到 JWT claim 值中。
还有什么比将byte[] 转换为base64URL 更有效的方法吗?
即
Microsoft.AspNetCore.WebUtilities.Base64UrlTextEncoder.Encode(arrToEnc);
最终目标是编码List<UInt16>,使每个UInt16 最多为2 个字节(在正常JWT 解码后)。
考虑byte[] -> UTF8 字符串。即System.Text.Encoding.UTF8.GetString(arrToEnc);
这与 JWT 通常使用 Base64 对其进行编码的方式完全不同...
谢谢..
【问题讨论】:
-
你能在base64编码之前把内容压缩成zip吗? Base64 增加了 33% 的开销。可能压缩更大
-
另一种选择是 base85,但它仅比 base64 提高了 7℅,并不常见,实现无法支持它。见stackoverflow.com/questions/1443158/…我建议压缩
-
我可以并且会使用 gzip。我将编写编码器和解码器,所以不常见是可以的。我认为最终解决方案取决于索赔值中“字符串”的字符集。我编码到那个基础。
标签: c# binary base64 jwt claims-based-identity