python 生成mysql密码_在mysql中生成加密密码,以填充django数据库

这是一个我已经有了一个可以接受的答案-所以我在这里张贴,看看是否有人可以改善它。在

我正在从一个旧的定制系统(mysql数据库和明文密码)迁移客户数据去django。数据迁移只需要使用一组sql脚本来完成,这些脚本可以在两个数据库上运行(将数据从旧数据库移动到新数据库并将其转换)。这个过程需要是可重复的、可预测的,并且有可能在无人值守的情况下运行。在

我需要获取现有的密码,加密并以Django可以接受的格式存储它们(参见详细信息here)。理想情况下,我会使用django首选的PBKDF2哈希器来实现这一点,但这很困难,因为我无法轻松模拟PBKDF2所做的密码拉伸/多次迭代。在

我现在的解决方法是使用SHA1对明文密码进行加密和加密,并将它们存储在Django中。然后,在客户第一次登录时,Django自动将密码加密升级到PBKDF2。在

我想使用SHA2/SHA256来实现这一点,但是Django在没有PBKDF2的情况下不支持它,至少除非我编写自己的密码哈希后端并将其添加到Django中设置.py-这看起来很费劲。在

因此,我在迁移sql脚本中得出了以下结论(为了清晰起见,简化了):insert into auth_user(username,password)

SELECT username

, CONCAT(

'sha1$',

@salt := SUBSTRING(MD5(RAND()) FROM 1 FOR 12),

'$', SHA1(CONCAT(@salt,password))

) AS password

FROM

old_user_table;

输出如下密码字符串:

^{pr2}$

到目前为止,它是一种享受-用户可以登录,加密是无声的升级。唯一的缺点是我们使用相对不安全的SHA1算法,至少在用户登录一次之前。在

有人能改进这个解决方案吗?在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值