Để xác thực mật khẩu UNIX, ta nên dùng module crypt. Nó có routine crypt(3). Đây về cơ bản là hàm băm một chiều (one-way hash function) dựa trên thuật toán DES đã sửa đổi.
Để dùng module crypt, nên nhập bằng:
import crypt
Phương thức crypt.crypt(word, salt)
Phương thức này nhận hai đối số. Thứ nhất là word (mật khẩu người dùng nhập vào prompt). Thứ hai là salt – chuỗi ngẫu nhiên. Salt dùng để xáo trộn thuật toán DES theo 4096 cách. Salt chỉ chứa chữ hoa, chữ thường, số và ký tự ‘/’, ‘.’.
Phương thức trả về mật khẩu đã băm (hashed) dưới dạng chuỗi.
Mã ví dụ
import crypt, getpass, spwd
def check_pass():
username = input("Nhập tên người dùng: ")
password = spwd.getspnam(username).sp_pwdp
if password:
clr_text = getpass.getpass()
return crypt.crypt(clr_text, password) == password
else:
return 1
if check_pass():
print("Mật khẩu khớp")
else:
print("Mật khẩu không khớp")
Kết quả
(Chạy chương trình này với quyền root)
$ sudo python3 example.py Nhập tên người dùng: unix_user Mật khẩu: Mật khẩu khớp