Pau*_*and 7 base64 encoding hex base85
如果您有需要编码的二进制数据,您使用的编码方案是什么?
我知道:
是否有其他常用的编码方案?如果是这样,有什么优点和缺点?
编辑:这很有用,例如,当尝试在cookie中存储任意数据时.Cookie只能存储文本,而不能存储任意数据,因此您需要以某种方式对其进行转换,最好是将其转换回来.此外,假设您正在使用无状态服务器,以便您无法在服务器上保存状态,只需将标识符放入cookie即可.当然,如果你这样做,你还需要一些方法来验证用户传递给你的是你传递给用户的内容,例如签名.
此外,由于目前的共识是你应该使用base64,因为它很普遍,我也会指出这是我使用的...我只是好奇,如果有人使用其他任何东西,如果是这样,为什么.
编辑:万一有人偶然发现,如果您确实想使用Base64将数据存储在cookie中,则需要使用修改后的Base64实现.看到这个答案的原因.
ska*_*man 13
要编码cookie值,您需要小心.看到这个较旧的答案:
对于版本0 cookie,值不应包含空格,括号,括号,等号,逗号,双引号,斜杠,问号,符号,冒号和分号.在所有浏览器上,空值的行为可能不同.
Base64编码可以=为某些输入生成符号,这在技术上不允许在cookie中(版本0 cookie,无论如何,这是最广泛支持的).在实践中,我怀疑它的=实际效果会很好,但也许不行.
我建议绝对确保您的编码二进制文件与cookie兼容,然后基本的十六进制编码是最安全的(例如在java中).
编辑:正如@Paul所指出的那样,Base 64的修改版本是"URL安全"(我认为,"cookie安全").使用标准算法的修改版本会淡化其魅力,请注意.
编辑:@shoosh指出,它=仅用于表示base64字符串的结尾,因此您可以修剪=,设置cookie,然后=在需要解码时再次重新附加.