Как хешировать пароли в Python?

Пользователь

от linnea , в категории: Python , 3 года назад

Как хешировать пароли в Python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от NicolasSsh , 3 года назад

@linnea  Для хеширования паролей, Вы можете воспользоваться стандартными библиотеками hashlib и os


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
import os
import hashlib

salt = os.urandom(32) # Обозначем "Соль" (Случайно сгенерированная)
password = "IlovePineApples293" # Для примера обозначаем пароль

key = hashlib.pbkdf2_hmac(
    hash_name = 'sha256', # Хешируем с помощью sha256
    password = password.encode('utf-8'), # Для хеширования кодируем пароль в utf-8
    salt = salt, # Соль обозначаем нашу же
    iterations = 100000, # Количество итераций (Лучше использовать данное значение)
    dklen = 128 # Длина ключа в байтах
    )

print(key)

# Вывод : b'\x90\xf7\xe5f\x9eX\xa5\x96\xc9\xccb\xb0\xa0b\xb7W\x9d/\xa1G\x9c\xe5\xc7\xa1tqS\x9b\xe9?"\xa3$\x86Y\x7fV\xff\xff\x193\xaa\xe5\x16\xb4\xd1\x16\xd7V$[\x1f\xb1\xd7[\xb8\xb4\x17\x86\xb5\x84\x97ePc\xbfK$S\xe5"\xfe\x04Q\x92_T\x8f\x92\xc9\xe8\x16A \xe52\xb7l?=\x0c\'h%\xdc\xea\x06\xebw\xf1a\xf8C\xc2\xf30!\xb3\xd9\xee\x98X>L\x13\x8a0[\x7fwiX\x1d\xb6<l44'

Пользователь

от adrien.waters , 2 года назад

@linnea 

Для хеширования паролей в Python рекомендуется использовать библиотеку bcrypt.


Вот простой пример использования bcrypt для хеширования пароля:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import bcrypt

password = b"password123"  # пароль в байтовом формате

# Хешируем пароль
salt = bcrypt.gensalt()
hashed_password = bcrypt.hashpw(password, salt)

# Проверяем пароль
password_to_check = b"password123"  # пароль для проверки
if bcrypt.checkpw(password_to_check, hashed_password):
    print("Пароль верный!")
else:
    print("Неверный пароль.")


В этом примере используется функция bcrypt.gensalt() для генерации случайной соли, которая будет использоваться для хеширования пароля. Затем пароль хешируется с помощью функции bcrypt.hashpw().


Для проверки пароля используется функция bcrypt.checkpw(). Она принимает два аргумента: пароль для проверки и хеш пароля. Если пароль соответствует хешу, то функция возвращает True, в противном случае - False.


Кроме того, для улучшения безопасности рекомендуется хешировать пароли с использованием соли и установить параметр сложности хеширования (например, количество итераций), чтобы затруднить атаку перебором.