Django的:如何从哈希数据库对象的主键的网址是什么?(django: How do I hash

2019-09-17 04:08发布

我想为我的数据库对象的网址。 我读过 ,我不应该使用的URL的主键,以及抽头是不是这个特殊的模型一个不错的选择。 基于该链接的建议,我zlib.crc32()在Python解释器发挥四周,发现价值经常回,我不希望在我的网址负数。 有没有更好的哈希值,我应该使用生成我的网址?

更新:我结束了使用低于大卫建议的按位异或掩蔽方法,它奇妙的作品。 感谢大家对您的输入。

Answer 1:

首先,“不使用URL中的主键”仅仅是一个非常弱的指导方针。 如果使用的是增量整数ID,你不希望透露这些数字,那么你可以混淆他们一点点。 例如,你可以使用: masked_id = entity.id ^ 0xABCDEFABunmasked_id = masked_id ^ 0xABCDEFAB

其次,你链接到文章是非常可疑的。 我不相信它。 首先,CRC32是一个单向散列函数:这是不可能的(一般)采取CRC32验证,并取回用于创建哈希的字符串。 你会发现,他并没有告诉你如何查找一个Customer给他们的CRC32 pk 。 其次,本文中的代码甚至没有任何意义。 该zlib.crc32函数需要一个字节的字符串,而Customer.id将是一个整数。

第三,如果你想使用一个蛞蝓的URL小心:如果蛞蝓的变化,您的网址也将发生变化。 这可能是好的,但它的东西,你需要考虑的问题。



文章来源: django: How do I hash a URL from the database object's primary key?