python,哈希函数选择

标签 python django hash hashcode

使用 Python 和 Django,我将让我的用户将基于 pdf 的礼物送给他们的 friend ,该 friend 可以通过从电子邮件链接进入我的网站来领取 pdf。

这是计划

  1. 用户给了他的 friend 一个礼物,输入 friend 的电子邮件

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

  3. friend 收到电子邮件,提供下载 pdf 的链接,类似于 ( www.mydomain.com/gift/<hash code here> )

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

  5. 如果是,则开始下载,否则为 404。

这是解决这个问题的聪明方法吗?如果是这样,您会推荐什么哈希函数?有趣的是/gift/是对公众开放的,如果幸运地找到一个链接,任何人都可以领取它。我计划通过接收者的名字加上礼物模型的 pk 来提供哈希函数

最佳答案

不需要使用哈希,你只需要一个随机 token 。

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

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

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

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

关于python,哈希函数选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2337825/

相关文章:

python - Django CMS 3.1 和 Django 1.7.8 自定义用户模型

hash - 更快地找到正确的 block 顺序以获得已知的 SHA1 哈希?

passwords - 当盐存储在散列旁边时,您可以破解散列密码吗?

django - Wagtail:通过模型过滤 ManyToMany 上的搜索

ruby 字符串到哈希的转换

python - 在python中的openCV中绘制一个旋转框

python - 如何在两个不同的列上合并两个 pandas 数据框,这些列的元素不按顺序排列?

python - 为 Debian 打包时如何访问原始 tarball?

python - 寻找使用python优化文本解析速度的实用解决方案

django - 如何在其他向导 View 的中间步骤中处理 login_required 以维护 Django 中的流程?