Chương trình dò tìm mật khẩu trên python

Đề bài: Viết chương trình kiểm tra mật khẩu người dùng khi đăng nhập. Người dùng phải đăng nhập khi đến khi nào đúng username và password thì thôi. [username và password được định nghĩa trước trong chương trình]

Trong thực tế, các bạn sẽ gặp bài toán này rất nhiều khi xây dựng phần mềm, wesbite mà có chức năng đăng nhập. Vậy nên bài toán này là vô cùng hữu ích.

Trước tiên các bạn cần nhận ra rằng nếu người dùng nhập đúng thì không sao, nếu người dùng nhập sai thì phải nhập lại, tức là phải lặp đi lặp lại nhiều lần. Vậy phải lặp lại bao nhiêu lần? Lặp lại đến khi nào đúng thì mới thôi -> Không thể biết trước lặp bao nhiêu lần. Vậy chúng ta phải dùng cái gì? Dùng vòng lặp mà chưa biết trước số lần lặp -> Dùng while hoặc do while.

Giờ các bạn nhớ lại ý nghĩa của vòng lặp while và do while:

  • while: Trong khi cái gì đúng thì làm công việc nào đó.
  • do while: Làm công việc trong khi cái gì vẫn còn đúng.

Do 2 cấu trúc này khá giống nhau về mặt ý nghĩa và cách dùng nên các bạn có thể dùng cái nào cũng được. Tuy nhiên để ý kỹ thì chúng ta sẽ thấy sự khác biệt.

Code sử dụng vòng lặp while:

Trong code trên các bạn lưu ý một số điểm:
Sử dụng thư viện string.h để dùng hàm so sánh chuỗi strcmp.
Do user và pass là chuỗi nên chúng ta sử dụng gets để nhập chứ không nên dùng scanf.
Do vòng while là vòng lặp kiểm tra điều kiện trước, do đó chúng ta phải có cái gì đó cho nó kiểm tra, do vậy chúng ta cần nhập vào user và pass ở trước đó. Điều này làm code của chúng ta bị lặp lại thừa một lần ở phía trên trước khi dùng vòng while. Tuy nhiên chúng ta cũng có thể không cần nhập trước, như vậy chuỗi user và pass ban đầu sẽ rỗng.

Sau đây là code mà chúng ta sử dụng do-while.

Trong code này, chúng ta sử dụng thêm biến count để đếm số lần login, nếu lần đầu tiên thì không hiện ra là mật khẩu sai, chỉ hiện từ lần thứ 2 trở đi mà thôi.

Về cơ bản, bài này khá dễ dàng. Hi vọng các bạn có thể nắm vững 🙂

là một công việc ở trường, tôi đang cố gắng tạo một chương trình mã hóa / giải mã mật khẩu. Tôi cần xem xét các quy tắc sau:

  1. Đảm bảo rằng mọi mật khẩu chứa ít nhất một chữ cái [AZ] hoặc [az], một ký tự không có dấu pha [từ #, @,%] và ít nhất một chữ số. Chương trình phải từ chối mật khẩu vi phạm quy tắc này.
  2. Hạn chế các ký tự được phép trong mật khẩu thành các chữ cái [AZ] và [az], chữ số [0-9] và ba ký tự [#, @,%]. Chương trình phải từ chối mật khẩu vi phạm quy tắc này.

Nếu mật khẩu vi phạm các điều kiện đó, tôi sẽ chấm dứt chương trình với:

print['Invalid password!'] sys.exit[]

Tôi đã bị mắc kẹt trong nhiều giờ khi cố gắng thêm các điều kiện này ... Tôi không biết phải thêm các điều kiện này vào đâu, bất cứ nơi nào tôi thêm chúng, chương trình của tôi chỉ kết thúc mặc dù tôi đã nhập mật khẩu hợp lệ TT

Đây là những gì tôi có cho đến nay [Tôi đã xóa phần đó để giải mã để sau này tôi có thể cố gắng tìm ra phần đó cho chính mình]:

# import sys module for termination import sys # init password_out = '' case_changer = ord['a'] - ord['A'] encryption_key = [['a','m'], ['b','h'], ['c','t'], ['d','f'], ['e','g'], ['f','k'], ['g','b'], ['h','p'], ['i','j'], ['j','w'], ['k','e'],['l','r'], ['m','q'], ['n','s'], ['o','l'], ['p','n'], ['q','i'], ['r','u'], ['s','o'], ['t','x'], ['u','z'], ['v','y'], ['w','v'], ['x','d'], ['y','c'], ['z','a'], ['#', '!'], ['@', '['], ['%', ']'], ['0'], ['1'], ['2'], ['3'], ['4'], ['5'], ['6'], ['7'], ['8'], ['9']] encrypting = True # get password password_in = input['Enter password: '] # perform encryption / decryption if encrypting: from_index = 0 to_index = 1 else: from_index = 1 to_index = 0 case_changer = ord['a'] - ord['A'] for ch in password_in: letter_found = False for t in encryption_key: if ['a'

Bài Viết Liên Quan

Chủ Đề