有这样一个字符串,时不时的在PHP程序中显示出来。当你粘贴到搜索引擎中进行搜索时,命中率几乎为零。它是怎么来的?它是如何产生的? 今天我们来聊聊YTowOnt9。 深度学习 经常涉及编码和解码。对于这样的字符串,你应该有一个潜意识的认识。是不是特别喜欢base64encode之后的内容。我们先用一些随机数,看看base64encode后是什么样子的。 为了模拟PHP的情况,我们没有使用linux系统下的base64工具,而是使用了内置函数base64_encode。 为了得到定长的随机字符串,我们使用上一篇文章推荐的方法,使用openssl_random_pseudo_bytes生成更好的随机数字节,然后使用bin2hex十六进制化,得到的结果是一个纯字符串。 如果你对上面的字符进行base64解码,你会得到什么? echobase64_decode('YTowOnt9'); 在命令行中执行得到如下输出。 a:0:{} 如果你用过PHP内置的序列化功能,应该对这个不陌生。我们来看看序列化函数serialize。在序列化对象并将它们存储在缓存中,甚至在数据库中时,您一定已经看到了它。 serialize返回一个字符串,其中包含表示值的字节省,可以存储在任何地方。这有利于存储或传递PHP值而不会丢失其类型和结构。 举个简单的例子,比如不同数据类型的数组序列化: $arrToPack=array('Loremipsumdolorsitamet',8726348723,true);echoserialize($arrToPack); 输出: a:3:{i:0;s:26:"Loremipsumdolorsitamet";i:1;i:8726348723;i:2;b:1;} 可以看到序列化后的内容,包括数组内容、结构、长度和价值。反序列化时,很容易实现。 公布答案 好了,前面的基础内容我们已经打好了基础,现在我们重点来反序列化这个字符串,看看能得到什么。 var_dump(反序列化(base64_decode(“YTowOnt9”))); 结果输出: array(0){} 竟然是一个空数组。 写在最后的 ,所以我们以后看到这样一个编码后的字符串,心里会有一个认识,判断应该生成程序的哪个阶段,用来做什么,这样调试起来就会容易很多。
