Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Hàm Python kiểm tra mật khẩu UNIX

Để 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