- A+
所属分类:python基础入门
hashids需要提供一个salt值,相当于编解码的私钥,别人不知道你的私钥,就无法编码出对应的帖子的展现key,也无法通过url上的展现key解码出对应的帖子id。所以想直接遍历你的帖子服务那就做不到了。
现在我们试试随便提供字符串,对它进行解码会怎样
我们看到这些字符串都是非法,所以hashids无法解码出对应的整数。
下面我们对一段连续整数进行编码
可以发现编码之后的值在直觉上是没有任何规律可言的。
鉴于hashids是如此的小巧,笔者随后对它的源代码进行了一番研究。首先看看它的构造器
注意火星文的字典必须是unicode类型。不然你编码得到的不是火星文,而是乱码。具体实现算法我就跳过了,有点复杂,我就不讲了。
然后它还支持对16进制字符串进行编解码,看来mongodb的id也可以纳入进来了。
最后你可千万别把秘钥搞丢了,一旦搞丢了,就意味着所有帖子的展现id需要重新计算一边,变的跟以前不一样了,搜索引擎收录的所有网页就失效了,别人外链过来的地址全都打不开,这无疑会给你的网站带来很大的损失。
我的微信公众号
爱真理,得永生! 爱在灵灵久博客,网罗天下,福利大家!