我在我的站点中实现了 cookie 机制。 我想存储的所有 cookie 都在一个数组中,其中包含它们的 TTL、值、名称 ...
当我想设置 cookie 时,我序列化选项卡,然后我 gzcompress,最后我 base64_encode
base64_encode(gzcompress(serialize($array)))
我的问题是有时候,当我得到 cookie 时
$_COOKIE[name]
base64_encoded 字符串全部为小写字符。
所以我的问题是: - 是否所有字符都是小写格式(base64_encoded)
或者也许我做错了什么,但问题并没有一直出现,我无法重现错误。
最佳答案
是的,Base64 编码的字符串可以全部为小写。这种情况发生的概率(对于随机输入数据,压缩数据非常接近)约为 (36/64)4 N/3,其中 N 是以字节为单位的输入长度,因此 4 N/3 是输出的近似长度(不包括填充)。
碰巧,(36/64)4 ≈ 0.100113 非常接近 1/10,因此,对于一个非常好的近似值,随机 Base64 字符串不包含大写字母的概率每四个字符的长度下降 10 倍。
因此,例如,一个随机的 8 个字符的 Base64 字符串(对应于一个随机的 6 字节输入)大约有 1% 的机会不包含大写字母,而相应的随机 12 个字符的 Base64 字符串的概率(对应于一个随机的 9 字节输入)大约是 0.1%,依此类推。
关于php - php中的base64编码/解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14022948/