36.5. crypt — 检查 Unix 密码的函数 — Python 文档
来自菜鸟教程
Python/docs/2.7/library/crypt
36.5. 地穴 — 检查 Unix 密码的函数
该模块实现了 crypt(3) 例程的接口,该例程是基于修改的 DES 算法的单向哈希函数; 有关更多详细信息,请参阅 Unix 手册页。 可能的用途包括允许 Python 脚本接受用户输入的密码,或尝试使用字典破解 Unix 密码。
请注意,该模块的行为取决于运行系统中 crypt(3) 例程的实际实现。 因此,当前实现上可用的任何扩展也将在此模块上可用。
- crypt.crypt(word, salt)
word 通常是在提示或图形界面中输入的用户密码。 salt 通常是一个随机的两个字符的字符串,它将用于以 4096 种方式之一扰乱 DES 算法。 salt中的字符必须在集合
[./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