Получение ошибки при шифровании пароля с использованием Python
Я получаю следующую ошибку при шифровании пароля с помощью bz2
модуль с использованием Python. Здесь я сохраняю это зашифрованное значение внутри БД.
Ошибка:
ProgrammingError at /signsave/
You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings.
Request Method: POST
Request URL: http://127.0.0.1:8000/signsave/
Django Version: 1.11.2
Exception Type: ProgrammingError
Exception Value:
You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings.
Я объясняю мой код ниже.
def signsave(request):
"""This function helps to save signup data"""
if request.method == 'POST':
name = request.POST.get('uname')
password = request.POST.get('pass')
con_pass = request.POST.get('conpass')
new_pass = bz2.compress(password)
if password == con_pass:
passw = User(
uname=name,
password=new_pass,
raw_password=password,
)
passw.save()
message = "Registered successfully"
return render(request, 'bookingservice/login.html', {'msg': message})
else:
message = "The password did not match "
return render(request, 'bookingservice/signup.html', {'msg': message})
Вот когда я пытаюсь сохранить зашифрованное значение, появляются эти ошибки.
1 ответ
Вы не должны использовать bz2
для чего угодно, кроме сжатия. Используйте встроенный hashlib
модуль вместо
замещать bz2.compress(password
с hashlib.sha256(str.encode(password)).digest()
, Вы получите хэш SHA256 вашей строки пароля, который вы можете проверить по хешам других строк, доказав их правильность.