Công cụ sau đây trực quan hóa những gì máy tính đang làm từng bước khi nó thực thi chương trình nói trên Show
Trình chỉnh sửa mã Python Có một cách khác để giải quyết giải pháp này? Trước. Viết chương trình Python chấp nhận một chuỗi và tính số chữ số và chữ cái Mức độ khó của bài tập này là gì? Dễ dàng trung bình khóKiểm tra kỹ năng Lập trình của bạn với bài kiểm tra của w3resource Theo dõi chúng tôi trên Facebook và Twitter để cập nhật thông tin mới nhất. con trăn. Lời khuyên trong ngàyDeque Một deque hoặc (Hàng đợi kết thúc kép) là một đối tượng Python hai đầu mà bạn có thể thực hiện một số thao tác nhất định từ cả hai đầu Nó có thể được sử dụng khi cần vận hành một bộ sưu tập ở cả hai đầu và có thể mang lại hiệu quả và tính đơn giản so với các cấu trúc dữ liệu truyền thống như danh sách Trong mã python ở trên, chúng tôi đã kiểm tra các điều kiện cho mật khẩu mạnh bằng cách sử dụng lại. phương thức search() trong điều kiện if-elif. Nếu tất cả các điều kiện được thỏa mãn, mật khẩu đã cho là mạnh. Trong trường hợp bất kỳ điều kiện nào không thành công, mật khẩu yếu Bạn kiểm tra mật khẩu của mình bằng đối tượng Chính sách kiểm soát loại mật khẩu nào được chấp nhận trong hệ thống của bạn Đầu tiên, tạo đối tượng Chính sách và xác định các quy tắc áp dụng cho mật khẩu trong hệ thống của bạn from password_strength import PasswordPolicy policy = PasswordPolicy.from_names( length=8, # min length: 8 uppercase=2, # need min. 2 uppercase letters numbers=2, # need min. 2 digits special=2, # need min. 2 special characters nonletters=2, # need min. 2 non-letter characters (digits, specials, anything) ) Bây giờ, khi bạn có đối tượng policy.test('ABcd12!') # -> [Length(8), Special(2)]4, bạn có thể sử dụng nó để kiểm tra mật khẩu của mình và nó sẽ cho bạn biết những lần kiểm tra nào không thành công policy.test('ABcd12!') # -> [Length(8), Special(2)] Điều này cho chúng tôi biết rằng 2 bài kiểm tra đã thất bại. mật khẩu không đủ dài và không có đủ ký tự đặc biệt. Bạn có thể sử dụng thông tin này để cho người dùng biết chính xác điều gì sai với mật khẩu của họ policy.test('ABcd12!@') # -> [] Danh sách trống cho chúng tôi biết rằng mật khẩu này không sao Tuy nhiên, thử nghiệm này đã kích hoạt sử dụng để sử dụng mật khẩu có nhiều lần lặp lại Cái gọi là Bit EntropyĐây là một bài kiểm tra thậm chí còn tốt hơn. Bạn không thực sự cần phải xác định các quy tắc phức tạp với các ký tự và nội dung đặc biệt. Tất cả những gì bạn thực sự cần là một mật khẩu đủ dài, đủ phức tạp và dễ nhớ (xem xkcd và Article. Tất cả mọi thứ chúng tôi đã nói về mật khẩu là sai) Vì vậy, thay vì xác định tất cả các quy tắc này, hãy chỉ yêu cầu mật khẩu đủ phức tạp. Các bit Entropy là thứ xác định mật khẩu của bạn có bao nhiêu loại. '01111010010011' đủ dài nhưng chỉ có 2 bit entropy. đó là số bit bạn cần để lưu trữ bảng chữ cái của nó. Tuy nhiên, mật khẩu sử dụng nhiều ký tự sẽ có nhiều entropy hơn policy = PasswordPolicy.from_names( entropybits=30 # need a password that has minimum 30 entropy bits (the power of its alphabet) ) print(policy.test('0123456789')) # -> [] Mật khẩu này không đủ dài hoặc không đủ an toàn nhưng có đủ entropy. từ vựng của nó có 10 ký tự khác nhau. Đặt bài kiểm tra này cùng với các yêu cầu khác để đảm bảo không có sự lặp lại trong mật khẩu của bạn phức tạpCác bit entropy rất quan trọng, nhưng khó hiểu. Một thử nghiệm thậm chí còn tốt hơn, trực quan hơn là yêu cầu mật khẩu phải "đủ phức tạp". Độ phức tạp là một số trong khoảng 0. 00. 0. 99. Mật khẩu tốt, mạnh bắt đầu từ 0. 66 Trước tiên hãy xem các mật khẩu khác nhau ghi điểm như thế nào from password_strength import PasswordStats stats = PasswordStats('qwerty123') print(stats.strength()) #-> Its strength is 0.316 stats = PasswordStats('G00dPassw0rd?!') print(stats.strength()) #-> Its strength is 0.585 stats = PasswordStats('V3ryG00dPassw0rd?!') print(stats.strength()) #-> Its strength is 0.767 Vì vậy, 0. 66 sẽ là một dấu hiệu rất tốt về một mật khẩu tốt. Hãy thực hiện chính sách của chúng ta policy = PasswordPolicy.from_names( strength=0.66 # need a password that scores at least 0.5 with its strength ) print(policy.test('V3ryG00dPassw0rd?!')) # -> [] -- empty list means a good password Một điều tốt khi sử dụng sức mạnh là nó cho phép người dùng sử dụng bảng chữ cái quốc gia bằng mật khẩu, mật khẩu an toàn nhất tested_pass = policy.password('Mixed-汉堡包/漢堡包, 汉堡/漢堡') print(tested_pass.strength()) # -> 0.812 -- very good! print(tested_pass.test()) #-> [] - good password; it actually scored 0.812 Lưu ý cách trong ví dụ trước, chúng tôi sử dụng một cách tiếp cận khác. policy.test('ABcd12!') # -> [Length(8), Special(2)]5 phân tích mật khẩu, sau đó chúng tôi có thể lấy được cả policy.test('ABcd12!') # -> [Length(8), Special(2)]6 và policy.test('ABcd12!') # -> [Length(8), Special(2)]7 của nó theo chính sách hiện tại Thực hiện kiểm tra mật khẩu Chính sách ban đầuPasswordPolicy(*tests) Khởi tạo chính sách mật khẩu với một danh sách các bài kiểm tra Ngoài ra PasswordPolicy.from_names(**tests) Khởi tạo chính sách mật khẩu từ một từ điển định nghĩa kiểm tra Một định nghĩa kiểm tra chỉ đơn giản là
Tên kiểm tra chỉ là một tên lớp viết thường Thí dụ policy.test('ABcd12!') # -> [Length(8), Special(2)]0 Các bài kiểm tra đi kèmCác đối tượng này thực hiện các bài kiểm tra riêng lẻ trên mật khẩu và báo cáo policy.test('ABcd12!') # -> [Length(8), Special(2)]8 của policy.test('ABcd12!') # -> [Length(8), Special(2)]9 kiểm tra. EntropyBits(bit)Kiểm tra xem mật khẩu có >= policy.test('ABcd12!@') # -> []0 bit entropy không Entropy bit là số bit cần thiết để lưu trữ bảng chữ cái được sử dụng trong mật khẩu. Đó là thước đo độ dài của bảng chữ cái kiểm tra. Chiều dài)Kiểm tra độ dài mật khẩu >= policy.test('ABcd12!@') # -> []1 kiểm tra. NonLetters(đếm)Kiểm tra xem mật khẩu có >= policy.test('ABcd12!@') # -> []2 ký tự không phải chữ cái không kiểm tra. NonLettersLc(đếm)Kiểm tra xem mật khẩu có >= policy.test('ABcd12!@') # -> []2 ký tự không viết thường không kiểm tra. Số (đếm)Kiểm tra xem mật khẩu có >= policy.test('ABcd12!@') # -> []2 ký tự số không kiểm tra. Đặc biệt (số lượng)Kiểm tra xem mật khẩu có >= policy.test('ABcd12!@') # -> []2 ký tự đặc biệt không kiểm tra. Sức mạnh (sức mạnh, yếu_bit = 30)Kiểm tra xem mật khẩu có >= policy.test('ABcd12!@') # -> []6 độ mạnh không Mật khẩu được đánh giá có độ mạnh bằng 0. 333 khi nó có policy.test('ABcd12!@') # -> []7 bit entropy, được coi là mật khẩu yếu. Mật khẩu mạnh bắt đầu từ 0. 666 kiểm tra. Chữ hoa (đếm)Kiểm tra xem mật khẩu có >= policy.test('ABcd12!@') # -> []2 ký tự viết hoa không thử nghiệmSau khi policy.test('ABcd12!') # -> [Length(8), Special(2)]4 được khởi tạo, có hai phương pháp để kiểm tra Chính sách mật khẩu. mật khẩu mở khóapolicy.test('ABcd12!') # -> [Length(8), Special(2)]1 Nhận số liệu thống kê mật khẩu bị ràng buộc với các bài kiểm tra được khai báo trong chính sách này Nếu ngoài các bài kiểm tra, bạn cần lấy số liệu thống kê (e. g. strength) -- sử dụng đối tượng này để nhân đôi phép tính Xem để biết thêm chi tiết Chính sách mật khẩu. kiểm trapolicy.test('ABcd12!') # -> [Length(8), Special(2)]2 Thực hiện kiểm tra mật khẩu lối tắt cho. policy = PasswordPolicy.from_names( entropybits=30 # need a password that has minimum 30 entropy bits (the power of its alphabet) ) print(policy.test('0123456789')) # -> []1 Kiểm tra tùy chỉnhATest là một lớp cơ sở để kiểm tra mật khẩu Để tạo một bài kiểm tra tùy chỉnh, chỉ cần phân lớp nó và thực hiện các phương pháp sau
Mật khẩuStatsPasswordStats cho phép tính toán số liệu thống kê về mật khẩu Nó coi mật khẩu là một chuỗi unicode và tất cả các số liệu thống kê đều dựa trên unicode Hàm tạo policy.test('ABcd12!') # -> [Length(8), Special(2)]3 Mật khẩuStats. bảng chữ cáiNhận bảng chữ cái. tập hợp các ký tự được sử dụng Mật khẩuStats. bảng chữ cái_cardinalityNhận cardinality bảng chữ cái. chiều dài bảng chữ cái Mật khẩuStats. char_categoriesSố ký tự trên mỗi danh mục cấp cao nhất Các danh mục cấp cao nhất sau đây được xác định
Mật khẩuStats. char_categories_detailedSố ký tự trên mỗi danh mục unicode, định dạng chi tiết Thấy. Mật khẩuStats. kết hợpSố lượng kết hợp có thể với bảng chữ cái hiện tại Mật khẩuStats. đếm(*loại)Chỉ đếm các ký tự của các lớp được chỉ định Mật khẩuStats. đếm_ngoại trừ (* danh mục)Đếm các ký tự của tất cả các lớp ngoại trừ các ký tự được chỉ định Mật khẩuStats. entropy_bitsNhận bit entropy thông tin. log2 của số lượng mật khẩu có thể https. // vi. wikipedia. org/wiki/Password_sức mạnh Mật khẩuStats. entropy_densityLấy thông tin hệ số mật độ entropy, dao động {0. 1} Đây là tỷ lệ của entropy_bits() so với bit tối đa mà mật khẩu có độ dài này có thể có. e. g. nếu tất cả các ký tự là duy nhất -- thì đó là 1. 0. Nếu một nửa số ký tự được sử dụng lại một lần -- thì đó là 0. 5 Mật khẩuStats. chiều dàiNhận độ dài mật khẩu Mật khẩuStats. bức thưĐếm tất cả các chữ cái Mật khẩuStats. chữ cái_chữ thườngĐếm chữ thường Mật khẩuStats. chữ cái_viết hoaĐếm chữ hoa Mật khẩuStats. con sốĐếm số Mật khẩuStats. repeat_patterns_lengthPhát hiện và trả về độ dài của các mẫu lặp lại Bạn có thể sẽ so sánh nó với độ dài của mật khẩu và cấm nếu nó dài hơn 10% Làm cách nào để kiểm tra xem mật khẩu có chứa ký tự đặc biệt trong Python không?Mã của bạn kiểm tra xem mật khẩu có chứa từ "Ký tự đặc biệt" không. Đầu tiên, loại bỏ các trích dẫn xung quanh nó. Thứ hai, chuyển đổi giá trị của biến thành biểu thức chính quy. ký tự đặc biệt = r"[\$#@. \*]" .
Làm cách nào để kiểm tra mật khẩu bằng regex trong Python?Phương pháp 2. Xác thực mật khẩu bằng Python Regex Match
. Import the re module. Sử dụng hàm compile() của mô-đun re để tạo các đối tượng Regex. Điều này cho phép thực thi các hàm regex trên mẫu mà chúng ta sẽ xác định cho mật khẩu bằng phương thức search().
Công cụ nào có thể được sử dụng để kiểm tra mật khẩu yếu?Kiểm tra mật khẩu yếu (WPT) miễn phí của KnowBe4 kiểm tra Active Directory của bạn để tìm một số loại mối đe dọa khác nhau liên quan đến mật khẩu yếu. WPT cung cấp cho bạn cái nhìn nhanh về hiệu quả của các chính sách mật khẩu và bất kỳ lỗi nào để bạn có thể hành động. |