有可能用Perl创建Django密码吗



因此,我承担了一个紧急项目,将MySQL用户数据库合并到现有的Django用户数据库中。

除了如何处理使用不同哈希的密码外,我几乎已经想好了所有的事情。我不了解Python、Django后端,也不太了解哈希技术。

我确实有一种方法可以用他们的电子邮件验证用户,我只需要一种方法来获取他们给我的密码,并以Django可接受的方式将其保存到数据库中。这将不得不用Perl来完成,因为这是我在服务器上唯一知道的语言。

我发现这个页面在谈论Django如何处理密码,但遗憾的是,我不明白他们在说什么。此外,我不知道这是否有任何帮助,但Django网站的管理区域给出了的"提示">

"使用'[algo]$[salt]$[hexdestist]'"作为密码。

这对我来说也没什么意义,但也许对你们中的一个人来说有意义?

基本上有两种方法可以处理:将现有密码转换为Django可以接受的格式,或者编写自己的Django密码哈希器。

对于第一种方式,正如您所发现的,密码字段由三个部分组成,每个部分由$分隔。(Django 1.6密码可能有4个部分,但现在我们忽略这个额外的部分,因为Django 1.6*也支持更传统的3部分密码。)这些部分是

  • 算法,描述密码哈希算法;它看起来像md5pbkdf2
  • salt,哈希算法的salt
  • 六进制摘要,哈希密码

因此,假设您的密码已经被加盐和散列,您的脚本需要在现有数据库中使用散列/加盐的密码,将盐与散列分离,然后将它们存储到数据库中,并以适当的算法字符串为前缀。应该有Perl模块来使用各种算法进行密码散列。Django推荐的算法是PBKDF2。bcrypt也不错。不过,就Django而言,任何哈希算法都是可以的,只要它有一个内置的哈希器(Django有最常见的哈希算法的哈希器)。

如果你现有的密码没有加盐和散列……那么,现在是这样做的好时机。;-)


另一种方法是按原样将密码复制到新数据库中,并编写自己的密码哈希器在Django应用程序中处理它们。当然,这需要编写一些Python代码。

最新更新