2010-02-25 103 views
1

使用Python和Django,我会让我的用户给他们的朋友提供基于pdf的礼物,所述朋友将能够通过从我们的网站从电子邮件链接进入声称PDF。python,哈希函数选择

这里是计划

  1. 用户提供了一个给他的朋友,进入朋友的电子邮件

  2. 在此背景下,礼品模型保存其中将包含一个唯一生成散列码在保存。

  3. 朋友接收到电子邮件,提供的链接下载这将是象(www.mydomain.com/gift/<hash code here>

  4. 当点击了邮寄链路,如果与所述给定的散列码,例如礼品模型存在系统检查PDF。

  5. 如果是这样开始下载,其他404

这是解决这个的一个聪明的办法?如果是的话,你会推荐什么哈希函数?有趣的是/礼物/向公众开放,如果有幸找到链接,任何人都可以声明。我打算通过接收第一姓氏加礼品模型

+1

我觉得你的下载链接不正确显示..它缺少的哈希码在结束 – stmax 2010-02-25 21:42:40

+0

固定它,感谢它指向了。 – Hellnar 2010-02-25 21:46:57

回答

6

没有必要使用散列,你只需要一个随机标记。

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

使字符的字符串足够长的时间,你是幸福这将是很难猜测

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

>>> import os 
>>> os.urandom(10).encode('hex') 
'3fa0c2f72ff275f48d66' 
>>> os.urandom(20).encode('hex') 
'ecc1143b3fc90bd99bcd609b326694f13291e3d1' 
>>> os.urandom(30).encode('hex') 
'd4a9a2cd7b48eca831e9805e68dd6f7db7275b654e55cdec603631a5a355' 
>>> 
1

UUI DS是相当随机

In [13]: import uuid 

In [14]: uuid.uuid4().hex 
Out[14]: 'f7a7667e94574e32b3589f84ca35a98d'