33.5. crypt – Функция для проверки паролей Unix¶crypt – Function to check Unix passwords
Платформы: Unix
Этот модуль реализует интерфейс к процедуре crypt(3), которая является односторонней хэш-функцией, основанной на модифицированном алгоритме DES; за дополнительными сведениями обращайтесь к странице руководства Unix. Возможные применения включают разрешение скриптам Python принимать вводимые пользователем пароли или попытки взлома паролей Unix с помощью словаря.
Обратите внимание, что поведение этого модуля зависит от фактической реализации crypt(3) в работающей системе. Поэтому все расширения, доступные в текущей реализации, будут доступны и в этом модуле.
- crypt.crypt(word, salt)¶
word обычно представляет собой пароль пользователя, введённый в командной строке или в графическом интерфейсе. salt обычно является случайной строкой из двух символов, которая используется для изменения алгоритма DES одним из 4096 способов. Символы в salt должны принадлежать набору [./a-zA-Z0-9]. Возвращает хэшированный пароль в виде строки, которая будет состоять из символов того же алфавита, что и соль (первые два символа представляют саму соль).
Поскольку некоторые расширения crypt(3) допускают различные значения с разными размерами salt, рекомендуется использовать полный зашифрованный пароль в качестве соли при проверке пароля.
Простой пример, иллюстрирующий типичное использование:
import crypt, getpass, pwd
def login():
username = input('Python login:')
cryptedpasswd = pwd.getpwnam(username)[1]
if cryptedpasswd:
if cryptedpasswd == 'x' or cryptedpasswd == '*':
raise "Sorry, currently no support for shadow passwords"
cleartext = getpass.getpass()
return crypt.crypt(cleartext, cryptedpasswd) == cryptedpasswd
else:
return 1