crypt
crypt - 检查Unix密码的函数
该模块实现crypt(3)
例程的接口,该例程是基于修改的DES算法的单向散列函数; 有关更多详细信息,请参阅Unix手册页。可能的用途包括允许Python脚本接受用户输入的密码,或试图用字典破解Unix密码。
请注意,此模块的行为取决于正在运行的系统中crypt(3)
例程的实际实现。因此,当前实现的任何可用扩展也将在此模块上提供。
crypt.crypt(word, salt)
word
通常是在提示或图形界面中键入的用户密码。salt
通常是一个随机的两个字符的字符串,将用于以4096种方式扰乱DES算法。盐中
的字符必须在集合中[./a-zA-Z0-9]
。将散列密码作为字符串返回,该字符串将由与盐相同的字母组成的字符组成(前两个字符代表盐本身)。
由于一些crypt(3)
扩展允许不同的值,salt的
大小不同,建议在检查密码时使用完整的加密密码作为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