Cách sử dụng getpass trong Python
Khi bạn tạo một số chương trình python cần bảo vệ bằng mật khẩu trước khi chương trình có thể chạy, chúng tôi sẽ nhờ sự trợ giúp của các mô-đun getpass() và getuser(). Chúng có nhiều chức năng có thể được sử dụng để quản lý bảo vệ mật khẩu cũng như truy xuất mật khẩu, v.v. Trong bài viết này, chúng ta sẽ xem cách nhập mật khẩu có và không lặp lại mật khẩu trên màn hình. Dưới đây là những cách khác nhau nó được xử lý Show
Với lời nhắcĐoạn mã dưới đây được lưu vào một tệp (logon. py). Hàm getpass() in lời nhắc sau đó đọc đầu vào từ người dùng cho đến khi họ nhấn phím quay lại Thí dụBản thử trực tiếp import getpass try: pwd = getpass.getpass() except Exception as err: print('Error Occured : ', err) else: print('Password entered :', pwd) đầu raChạy đoạn mã trên cho chúng ta kết quả sau - $ python logon.py Password: Password entered: abracadbra Với câu hỏi bảo mậtTiếp theo, chúng tôi có thể cải tiến mã để nhắc người dùng bằng câu hỏi bảo mật. Câu hỏi này giúp người dùng nhớ lại mật khẩu Thí dụimport getpass pwd = getpass .getpass(prompt = 'What is your favorite colour?') if pwd == 'Crimson': print('You are in!') else: print('Try Again') đầu raChạy đoạn mã trên cho chúng ta kết quả sau - $ python logon.py 'What is your favorite colour? You are in! Hiển thị Tên đăng nhậpĐôi khi chúng ta cần biết tên đăng nhập mà chúng ta đang sử dụng để chạy tập lệnh. Điều này đạt được bằng cách sử dụng hàm getuser() Mô-đun Python getpass.getpass(prompt='Password: ', stream='None')3 cung cấp chức năng nhập mật khẩu di động và cho phép bạn chấp nhận một chuỗi đầu vào trong giao diện dòng lệnh (CLI) mà không cần nhập chuỗi để hiển thị (lặp lại) trong giao diện Mô-đun getpass.getpass(prompt='Password: ', stream='None')3 cũng bao gồm chức năng getpass.getpass(prompt='Password: ', stream='None')0 để truy xuất tên người dùng từ các biến môi trường có liên quan Trong hướng dẫn getpass.getpass(prompt='Password: ', stream='None')3 Python này, tôi sẽ chỉ cho bạn cách cài đặt getpass.getpass(prompt='Password: ', stream='None')3 và sử dụng chức năng, sau đó giải thích một số khái niệm cơ bản và Câu hỏi thường gặp Làm cách nào để cài đặt Python Getpass?Mô-đun getpass.getpass(prompt='Password: ', stream='None')3 là một phần của Thư viện tiêu chuẩn Python, được lưu trữ trong danh mục 'Dịch vụ hệ điều hành chung' Điều này có nghĩa là rất có thể bạn đã có nó trong bản cài đặt Python của mình và sẽ không cần cài đặt nó nữa. Tuy nhiên, nó không phải là một chức năng tích hợp nên bạn sẽ cần phải nhập nó để sử dụng nó Như thế này import getpass Cú pháp & Ví dụĐây là cú pháp và ví dụ để minh họa cách sử dụng mô-đun Python getpass.getpass(prompt='Password: ', stream='None')3 getpass.getpass(prompt='Password: ', stream='None') getpass.getpass(prompt='Password: ', stream='None')5 là một đối số từ khóa tùy chọn cho những gì người dùng sẽ thấy trong giao diện dòng lệnh để nhắc nhập mật khẩu của họ. Giá trị mặc định là getpass.getpass(prompt='Password: ', stream='None')6 sẽ hiển thị nếu bạn không đưa ra lời nhắc thay thế Đối số từ khóa getpass.getpass(prompt='Password: ', stream='None')7 là để bạn chỉ định luồng mà lời nhắc được ghi vào (chỉ được sử dụng trên Unix). Nếu bạn không chỉ định luồng thay thế, giá trị mặc định của getpass.getpass(prompt='Password: ', stream='None')8 sẽ được chuyển và hàm getpass.getpass(prompt='Password: ', stream='None')9 sẽ chọn luồng phù hợp nhất cho bạn Thí dụ $ python logon.py Password: Password entered: abracadbra2 đầu ra Mã nhắc người dùng nhập các giá trị tại hai điểm khác nhau ‘ $ python logon.py Password: Password entered: abracadbra20‘ và ‘ $ python logon.py Password: Password entered: abracadbra21’ và đầu ra mã sẽ khác nhau tùy thuộc vào đầu vào $ python logon.py Password: Password entered: abracadbra5 Giải trình Trong ví dụ này, chúng tôi bắt đầu với một từ điển có tên người dùng được ghi lại và mật khẩu tương ứng ❗ Chú ý. Mật khẩu không nên được lưu trữ dưới dạng văn bản gốc trong cơ sở dữ liệu như thế này nhưng đây chỉ là một ví dụ minh họa nhanh) Đầu tiên, chúng tôi yêu cầu tên người dùng bằng cách sử dụng đầu vào tiêu chuẩn (tôi sẽ thảo luận về một giải pháp thay thế cho điều này bên dưới) và sau đó nếu tên người dùng được tìm thấy trong từ điển, chúng tôi sẽ yêu cầu mật khẩu tương ứng bằng hàm getpass.getpass(prompt='Password: ', stream='None')9 💡 Lưu ý. chúng tôi đã sử dụng tham số getpass.getpass(prompt='Password: ', stream='None')5 tùy chọn để nhập dấu nhắc mật khẩu tùy chỉnh của mình $ python logon.py Password: Password entered: abracadbra24 Sau đó, chương trình sẽ kiểm tra xem mật khẩu đã nhập có khớp với mật khẩu tương ứng với người dùng như được ghi trong từ điển hay không Nếu mật khẩu khớp với tên người dùng thì thông báo thành công sẽ được in nhưng nếu mật khẩu không chính xác thì thông báo lỗi sẽ được in Trường hợp sử dụngMô-đun getpass.getpass(prompt='Password: ', stream='None')3 chỉ để chấp nhận một chuỗi trong CLI (Giao diện dòng lệnh) mà không có chuỗi đó dội lại vào CLI khi nó được nhập Đây có thể là bước bảo mật cơ bản đầu tiên cho bất kỳ ứng dụng CLI nào. Đây không phải là một giải pháp bảo mật đầy đủ, vì vậy nếu cần bảo vệ dữ liệu nhạy cảm, bạn nên triển khai các lớp bảo mật khác Mô-đun này được thiết kế để chấp nhận mật khẩu nhưng bạn có thể sử dụng nó để chấp nhận bất kỳ chuỗi nào bạn muốn ẩn, chẳng hạn như câu trả lời bí mật cho một bài kiểm tra GetPassCảnh báoNếu vì lý do nào đó, chức năng getpass.getpass(prompt='Password: ', stream='None')9 không thể ngăn CLI lặp lại mật khẩu, thì $ python logon.py Password: Password entered: abracadbra27 sẽ được kích hoạt để cảnh báo người dùng Điều đó sẽ trông giống như thế này import getpass pwd = getpass .getpass(prompt = 'What is your favorite colour?') if pwd == 'Crimson': print('You are in!') else: print('Try Again')1 Hàm getuser()Hàm $ python logon.py Password: Password entered: abracadbra28 là hàm thứ hai có sẵn trong mô-đun getpass.getpass(prompt='Password: ', stream='None')3. Nó được sử dụng để lấy tên người dùng từ một trong bốn biến môi trường hiện có
Nếu không có biến môi trường nào chứa chuỗi tên người dùng, thay vào đó, hàm sẽ cố gắng lấy tên người dùng từ mô-đun $ python logon.py Password: Password entered: abracadbra54 $ python logon.py Password: Password entered: abracadbra55 Đây là một ví dụ về $ python logon.py Password: Password entered: abracadbra28 đang hoạt động $ python logon.py 'What is your favorite colour? You are in!0 đầu ra $ python logon.py 'What is your favorite colour? You are in!1 Giải trình Trong mẫu mã này, hàm $ python logon.py Password: Password entered: abracadbra28 cố gắng trích xuất tên người dùng và sau đó chúng tôi kiểm tra xem tên người dùng đó có trong lệnh của chúng tôi không. Nếu đúng như vậy thì chúng tôi in thông báo $ python logon.py Password: Password entered: abracadbra58 Câu hỏi thường gặp GetpassĐiều đó kết thúc lời giải thích cho mô-đun getpass.getpass(prompt='Password: ', stream='None')3. Trong phần còn lại của bài viết, tôi sẽ xem qua một số Câu hỏi thường gặp liên quan và thông tin cơ bản Luồng trong Python Getpass là gì?Luồng trong máy tính là thứ có thể truyền dữ liệu giữa hai điểm cuối; . ’ Ba luồng đầu vào/đầu ra (I/O) tiêu chuẩn là import getpass pwd = getpass .getpass(prompt = 'What is your favorite colour?') if pwd == 'Crimson': print('You are in!') else: print('Try Again')12 (đầu vào tiêu chuẩn), import getpass pwd = getpass .getpass(prompt = 'What is your favorite colour?') if pwd == 'Crimson': print('You are in!') else: print('Try Again')13 (đầu ra tiêu chuẩn) và import getpass pwd = getpass .getpass(prompt = 'What is your favorite colour?') if pwd == 'Crimson': print('You are in!') else: print('Try Again')14 (lỗi tiêu chuẩn) Ban đầu đây là những kết nối vật lý nhưng trong máy tính và phần mềm hiện đại, chúng được trừu tượng hóa. Luồng giống như tệp và bạn có thể đọc/ghi dữ liệu từ luồng giống như bạn có thể làm với tệp. Chúng có liên quan đến getpass.getpass(prompt='Password: ', stream='None')3 vì mô-đun sẽ cố gắng sử dụng các luồng thay thế để đọc và ghi dữ liệu nếu (các) luồng mặc định không khả dụng Theo tài liệu getpass.getpass(prompt='Password: ', stream='None')3 Trên Unix, lời nhắc được ghi vào luồng đối tượng giống như tệp bằng cách sử dụng trình xử lý lỗi thay thế nếu cần. luồng mặc định cho thiết bị đầu cuối điều khiển (/ dev/tty) hoặc nếu điều đó không có sẵn cho sys. stderr (đối số này bị bỏ qua trên Windows) Nếu đầu vào không có tiếng vang không khả dụng, getpass.getpass(prompt='Password: ', stream='None')9 sẽ quay lại in thông báo cảnh báo để phát trực tuyến và đọc từ sys. stdin và đưa ra GetPassWarning Một tty trong Python là gì?Ban đầu, import getpass pwd = getpass .getpass(prompt = 'What is your favorite colour?') if pwd == 'Crimson': print('You are in!') else: print('Try Again')18 là tên viết tắt của thiết bị vật lý 'máy đánh chữ từ xa' kết nối máy đánh chữ với máy in băng từ xa Ngày nay, import getpass pwd = getpass .getpass(prompt = 'What is your favorite colour?') if pwd == 'Crimson': print('You are in!') else: print('Try Again')19 được sử dụng để mô tả bất kỳ môi trường nhập/xuất văn bản nào có thể là vật lý hoặc trong phần mềm và gần tương đương với thuật ngữ 'thiết bị đầu cuối'. ’ 'Bảng điều khiển' là phiên bản vật lý của thiết bị đầu cuối 'Trình giả lập thiết bị đầu cuối' là phiên bản phần mềm của thiết bị đầu cuối vật lý. Đây có lẽ là những gì bạn đã quen làm việc trên máy tính của mình 'Shell' là trình thông dịch dòng lệnh chạy trên thiết bị đầu cuối Điều này có thể giúp phân biệt các thuật ngữ này nhưng lưu ý rằng chúng thường được sử dụng thay thế cho nhau getpass trong Python là gì?Getpass là một mô-đun để che dấu đầu vào mật khẩu để nó không bị lặp lại giao diện dòng lệnh khi nó đang được nhập. Mô-đun này cũng cung cấp hỗ trợ nhắc nhập mật khẩu và truy xuất tên người dùng của người dùng hiện tại Getpass có trong Thư viện chuẩn Python không?Vâng, đúng vậy. Tuy nhiên, nó không phải là một chức năng tích hợp nên bạn vẫn cần nhập nó để sử dụng nó trong mã của mình. Như thế này. $ python logon.py 'What is your favorite colour? You are in!00 Làm cách nào để sử dụng mật khẩu trong Python?Điều kiện chính để xác thực mật khẩu. . Tối thiểu 8 ký tự Bảng chữ cái phải nằm trong khoảng từ [a-z] Ít nhất một bảng chữ cái phải là Chữ hoa [A-Z] Ít nhất 1 số hoặc chữ số trong khoảng [0-9] Ít nhất 1 ký tự từ [ _ hoặc @ hoặc $ ] Làm cách nào để thêm mật khẩu trong Python?Dự án Python tạo mật khẩu bảo mật cao. . nhập ngẫu nhiên. . in (chuỗi. in được). char_seq = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ. #$. print("Nhập độ dài yêu cầu của mật khẩu từ 8 đến 16. "). nếu chiều dài >= 8 và chiều dài <= 16. . khác. . pip cài đặt trình tạo mật khẩu ngẫu nhiên Getpass có trong thư viện chuẩn của Python không?Có hai hàm được định nghĩa trong mô-đun getpass của thư viện chuẩn của Python . Chúng hữu ích bất cứ khi nào một ứng dụng dựa trên thiết bị đầu cuối chỉ cần được thực thi sau khi xác thực thông tin đăng nhập của người dùng.
Làm cách nào để sử dụng getuser trong Python?Phương thức getuser() được sử dụng để trích xuất tên người dùng hoặc tên đăng nhập đã đăng nhập hiện tại . Để quay lại, nó kiểm tra các biến môi trường hệ thống LOGNAME , USER , LNAME và USERNAME. Nếu giá trị của cái đầu tiên được đặt, nó sẽ trả về tên đăng nhập. Nếu không, nó sẽ trả về Không có hoặc đưa ra một ngoại lệ. |