python,哈希函数选择

Hel*_*nar 1 python django hash hashcode

使用Python和Django,我会让我的用户给他们的朋友提供基于pdf的礼物,所述朋友可以通过电子邮件链接进入我的网站来申请pdf.

这是计划

  1. 用户给他的朋友一个给,给朋友发电子邮件

  2. 在后台,将保存一个礼品模型,该模型将在保存时包含唯一生成的哈希代码.

  3. 朋友收到电子邮件,提供下载pdf的链接,就像(www.mydomain.com/gift/<hash code here>)

  4. 单击邮寄链接时,系统会检查是否存在具有给定哈希码的礼品模型.

  5. 如果是这样下载开始,否则404.

这是解决这个问题的聪明方法吗?如果是这样,你会推荐什么样的散列函数?有趣的是,/ gift /对公众开放,如果以某种方式幸运地找到链接,任何人都可以声称它.我打算用接收器的姓氏加上礼物模型的pk来提供哈希函数

Joh*_*ooy 6

没有必要使用哈希,你只需要一个随机令牌.

  1. 创建一串随机字符
  2. 如果已经使用(不太可能),请重复步骤1

使字符串足够长,你很高兴很难猜到

一种生成随机字符串的简单方法是

>>> import os
>>> os.urandom(10).encode('hex')
'3fa0c2f72ff275f48d66'
>>> os.urandom(20).encode('hex')
'ecc1143b3fc90bd99bcd609b326694f13291e3d1'
>>> os.urandom(30).encode('hex')
'd4a9a2cd7b48eca831e9805e68dd6f7db7275b654e55cdec603631a5a355'
>>> 
Run Code Online (Sandbox Code Playgroud)