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