以md5格式django保存md5密码?

时间:2017-07-01 19:10:55

标签: mysql django hash

我正在迁移我的数据库,我有一个用户表,其密码存储在md5中?所以我只想将我的密码存储在md5中,如果用户输入密码就接受它。所以我有什么方法可以保存我的密码在md5中。  say for example my user has a password :-'e10adc3949ba59abbe56e057f20f883e'

password =request.POST.get('password').strip()
        confirmPassword =request.POST.get('confirmPassword').strip()
        if password != confirmPassword:
            messages.error(request,'password and confim password must be same')
            return render(request, 'templates/sign-up.html')
        if User.objects.filter(email=email).exists():
            messages.error(request, 'This email already exists')
            return render(request, 'templates/sign-up.html')
        new_password = make_password(password)
        staff = False
        superUser = False
        status = True
        authUser = User( password=new_password,
                        username=email, email=email,is_active=status, is_staff=staff, is_superuser=superUser)
        authUser.save()

我希望在我的auth_user表中保存它,我该怎么做。

1 个答案:

答案 0 :(得分:0)

Django内置了MD5密码哈希,只需将其添加到PASSWORD_HASHERS设置的底部:

PASSWORD_HASHERS = [
    'django.contrib.auth.hashers.PBKDF2PasswordHasher',
    'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
    'django.contrib.auth.hashers.Argon2PasswordHasher',
    'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
    'django.contrib.auth.hashers.BCryptPasswordHasher',
    'django.contrib.auth.hashers.UnsaltedMD5PasswordHasher',
]

这样Django将使用无盐MD5检查密码,但是当用户成功登录时,密码会自动更新以使用更强的哈希值。

但是,出于安全考虑,强烈建议您编写一个wrapped hasher,它将使用更强的密码散列算法对md5散列进行散列。通过包装md5哈希,您可以简单地导入旧哈希并以安全的方式保存它们,而无需用户在生效之前登录。