在php中进行base64编码/解码

时间:2012-12-24 15:10:22

标签: php

我在我的网站中实现了cookie机制。 我想要存储的所有cookie都在一个包含TTL,值,名称......的数组中。

当我想设置cookie时,我序列化选项卡,然后我gzcompress,最后我base64_encode

base64_encode(gzcompress(serialize($array)))

我的问题是某个时候,当我用

获取cookie时
$_COOKIE[name]

base64_encoded字符串全部为小写字符。

所以我的问题是: - 可能所有字符都是小写格式(base64_encoded)

或者也许我做错了但问题并没有一直出现,我无法重现这个错误。

1 个答案:

答案 0 :(得分:6)

是的,Base64编码的字符串可以全部小写。发生这种情况的概率(对于随机输入数据,压缩数据非常接近)约为(36/64) 4 N / 3 ,其中 N < / em>是输入的长度(以字节为单位),因此4 N / 3是输出的近似长度(不包括填充)。

碰巧,(36/64) 4 ≈0.100113非常接近1/10,因此,非常好的近似值,随机Base64字符串不包含大写字母的概率每四个字符的长度下降10倍。

因此,例如,一个随机的8个字符的Base64字符串(对应于一个随机的6字节输入)有大约1%的机会不包含大写字母,而随机的12个字符的Base64字符串的相应概率(对应于随机的9字节输入)约为0.1%,依此类推。