gpt4 book ai didi

encoding - 当您需要通过 ascii channel 发送二进制数据时,您使用什么文本编码方案?

转载 作者:行者123 更新时间:2023-12-02 22:04:53 26 4
gpt4 key购买 nike

如果您有需要编码的二进制数据,您使用什么编码方案?

我知道:

  • Hex encoding 。非常简单,但相当冗长,将一个字节扩展为两个字节。
  • Base 64 。最常见但不那么冗长的是将三个字节扩展为四个字节。
  • Base 85 。不常见,再次不那么冗长,将四个字节扩展到五个。

还有其他常用的编码方案吗?如果是的话,有什么优点和缺点?

编辑:例如,当尝试在 cookie 中存储任意数据时,这很有用。 Cookie 只能存储文本,不能存储任意数据,因此您需要以某种方式对其进行转换,最好有一种将其转换回来的方法。此外,假设您使用的是无状态服务器,因此您无法在服务器上保存状态并仅将标识符放入 cookie 中。当然,如果您这样做,您还需要某种方法来验证用户传回给您的内容是否是您传递给用户的内容,例如签名。

此外,由于当前的共识是您应该使用 base64,因为它很广泛,我还将指出这我使用的...我只是好奇是否有人使用其他任何东西,如果是这样,为什么。

编辑:以防万一有人偶然发现这一点,如果您确实想使用 Base64 在 cookie 中存储数据,则需要使用 a modified Base64 implementation 。请参阅this answer究其原因。

最佳答案

对于 cookie 值的编码,您需要小心。看这个older answer :

With Version 0 cookies, values should not contain white space, brackets, parentheses, equals signs, commas, double quotes, slashes, question marks, at signs, colons, and semicolons. Empty values may not behave the same way on all browsers.

Base64 编码可以为某些输入生成 = 符号,从技术上讲,这在 cookie 中是不允许的(无论如何,版本 0 cookie 是最广泛支持的)。在实践中,我怀疑 = 实际上可以正常工作,但也许不会。

我建议,要绝对确保您编码的二进制文件与 cookie 兼容,那么基本的十六进制编码是最安全的(例如 in java )。

编辑: 正如@Paul 指出的那样,有一个 modified version of Base 64这是“URL 安全”(并且我认为“cookie 安全”)。请注意,使用标准算法的修改版本反而会削弱其魅力。

编辑:@shoosh指出=仅用于表示base64字符串的结尾,因此您可以修剪= >,设置cookie,然后在需要解码时重新附加=

关于encoding - 当您需要通过 ascii channel 发送二进制数据时,您使用什么文本编码方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2090009/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com