Получение ошибки при шифровании пароля с использованием 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 вашей строки пароля, который вы можете проверить по хешам других строк, доказав их правильность.

Другие вопросы по тегам