我已经将旧的joomla安装迁移到了django。虽然密码哈希值是一个问题。我不得不修改contrib.auth.models中的get_hexdigest以使用额外的if语句来颠倒生成散列的方式。将代码添加到contrib.auth的最简洁方法
# Custom for Joomla
if algorithm == 'joomla':
return md5_constructor(raw_password + salt).hexdigest()
# Djangos original md5
if algorithm == 'md5':
return md5_constructor(salt + raw_password).hexdigest()
我还添加以下到用户模式登录后更新的密码,如果他们有旧的Joomla风格:
# Joomla Backwards compat
algo, salt, hsh = self.password.split('$')
if algo == 'joomla':
is_correct = (hsh == get_hexdigest(algo, salt, raw_password))
if is_correct:
# Convert the password to the new more secure format.
self.set_password(raw_password)
self.save()
return is_correct
一切工作完美,但我宁愿不修改这个代码直接在django树中。在我自己的项目中是否有更简单的方法来实现这一点?
感谢
备案:就安全性而言,最好先用盐(见:http://programming.arantius.com/how-to-salt-your-hash) – Jiaaro 2009-11-17 13:22:14
感谢您的支持。我没有意识到这一点。但在这种情况下,我不能改变它。我正在处理来自Joomla的遗留数据,并以另一种方式进行处理。 – Clarence 2009-11-18 03:36:34