我在我的网站上实现了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& about; 0.100113非常接近1/10,因此,对于非常好的近似,随机Base64字符串不包含大写字母的概率每四个字符的长度下降10倍.
因此,例如,随机的8字符Base64字符串(对应于随机的6字节输入)有大约1%的可能性不包含大写字母,而随机12字符的Base64字符串的对应概率(对应于a随机9字节输入)约为0.1%,依此类推.