我正在迁移我的数据库,我有一个用户表,其密码存储在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表中保存它,我该怎么做。
答案 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哈希,您可以简单地导入旧哈希并以安全的方式保存它们,而无需用户在生效之前登录。