我想为我的数据库对象的网址。 我读过 ,我不应该使用的URL的主键,以及抽头是不是这个特殊的模型一个不错的选择。 基于该链接的建议,我zlib.crc32()在Python解释器发挥四周,发现价值经常回,我不希望在我的网址负数。 有没有更好的哈希值,我应该使用生成我的网址?
更新:我结束了使用低于大卫建议的按位异或掩蔽方法,它奇妙的作品。 感谢大家对您的输入。
我想为我的数据库对象的网址。 我读过 ,我不应该使用的URL的主键,以及抽头是不是这个特殊的模型一个不错的选择。 基于该链接的建议,我zlib.crc32()在Python解释器发挥四周,发现价值经常回,我不希望在我的网址负数。 有没有更好的哈希值,我应该使用生成我的网址?
更新:我结束了使用低于大卫建议的按位异或掩蔽方法,它奇妙的作品。 感谢大家对您的输入。
首先,“不使用URL中的主键”仅仅是一个非常弱的指导方针。 如果使用的是增量整数ID,你不希望透露这些数字,那么你可以混淆他们一点点。 例如,你可以使用: masked_id = entity.id ^ 0xABCDEFAB
和unmasked_id = masked_id ^ 0xABCDEFAB
。
其次,你链接到文章是非常可疑的。 我不相信它。 首先,CRC32是一个单向散列函数:这是不可能的(一般)采取CRC32验证,并取回用于创建哈希的字符串。 你会发现,他并没有告诉你如何查找一个Customer
给他们的CRC32 pk
。 其次,本文中的代码甚至没有任何意义。 该zlib.crc32
函数需要一个字节的字符串,而Customer.id
将是一个整数。
第三,如果你想使用一个蛞蝓的URL小心:如果蛞蝓的变化,您的网址也将发生变化。 这可能是好的,但它的东西,你需要考虑的问题。