Python có thể giúp bạn tạo và lưu trữ mật khẩu theo cách an toàn bằng mật mã, điều này rất hữu ích để thiết kế ứng dụng và chương trình hoặc nói chung là giữ an toàn cho tài khoản của bạn
## pFjmt_m--A-X7jAwzAl7N1nblHTkLcgn7FYZqNc-5sM
4 là một mô-đun tích hợp sẵn trong Python 3. 6 trở đi. Theo tài liệu, nó “được sử dụng để tạo các số ngẫu nhiên mã hóa mạnh phù hợp để quản lý dữ liệu như mật khẩu, xác thực tài khoản, mã thông báo bảo mật và các bí mật liên quan. ” - https. // tài liệu. con trăn. org/3/thư viện/bí mật. htmlVì vậy,
## pFjmt_m--A-X7jAwzAl7N1nblHTkLcgn7FYZqNc-5sM
4 có thể được sử dụng để tạo mật khẩu và ## pFjmt_m--A-X7jAwzAl7N1nblHTkLcgn7FYZqNc-5sM
6 có thể được sử dụng để lưu trữ mật khẩuVí dụ, tạo một chuỗi văn bản ngẫu nhiên mà các ứng dụng có thể sử dụng để tạo các URL khó đoán nhằm thực hiện đặt lại mật khẩu
import secrets
token = secrets.token_urlsafe[]
print[token]
## pFjmt_m--A-X7jAwzAl7N1nblHTkLcgn7FYZqNc-5sM
Tạo chuỗi an toàn cho URL có độ dài là số byte tùy chỉnh
token = secrets.token_urlsafe[10]
print[token]
## V2iZ8TPfnnQeRA
Mật khẩu mạnh nhưng dễ nhớ, chẳng hạn như được đề xuất bởi XKCD [https. //xkcd. com/936/] có thể được tạo bằng cách sử dụng danh sách các từ. Trên các hệ điều hành Linux tiêu chuẩn, có thể sử dụng tệp từ điển hệ thống tại
## pFjmt_m--A-X7jAwzAl7N1nblHTkLcgn7FYZqNc-5sM
7. Trên các hệ điều hành khác, bạn sẽ cần sử dụng tệp từ điển hoặc danh sách từ của riêng mìnhwith open['/usr/share/dict/words'] as f:
words = [word.strip[] for word in f]
password = ' '.join[secrets.choice[words] for i in range[4]]
print[password]
## appositive hallucinogen Chase Ibsen
Khi bạn tạo mật khẩu cho một tài khoản, thường sẽ có các yêu cầu về độ mạnh của nó. Ví dụ: một trang web có thể nói rằng mật khẩu của bạn cần chứa
- Chữ và số [số và chữ cái]
- Ít nhất mười hai ký tự
- Ít nhất một ký tự chữ thường
- Ít nhất một ký tự viết hoa
- Ít nhất một ký tự đặc biệt
- Ít nhất hai chữ số
Đây là đoạn mã sẽ tạo mật khẩu phù hợp với các tiêu chí đó cho bạn
import secrets
import string
alphabet = string.ascii_letters + string.digits + string.punctuation
while True:
password = ''.join[secrets.choice[alphabet] for i in range[12]]
if [
any[c.islower[] for c in password] and
any[c.isupper[] for c in password] and
any[c in string.punctuation for c in password] and
sum[c.isdigit[] for c in password] >= 3
]:
break
print[password]
## _V_4Gz7w3>V_
Đôi khi các yêu cầu thậm chí còn nghiêm ngặt hơn thế này và tiếp tục quy định rằng phải có
- Không chạy ba số liên tiếp trở lên
- Không có ba chữ cái liên tiếp trở lên
Đây là cách thêm vào các quy tắc này
import secrets
import string
alphabet = string.ascii_letters + string.digits + string.punctuation
while True:
password = ''.join[secrets.choice[alphabet] for i in range[12]]
if [
any[c.islower[] for c in password] and
any[c.isupper[] for c in password] and
any[c in string.punctuation for c in password] and
sum[c.isdigit[] for c in password] >= 3 and
not any[
all[
[
password[i].isdigit[],
password[i + 1].isdigit[],
password[i + 2].isdigit[]
]
] for i, c in enumerate[password[:-2]]
] and
not any[
all[
[
password[i] in string.ascii_letters,
password[i + 1] in string.ascii_letters,
password[i + 2] in string.ascii_letters
]
] for i, c in enumerate[password[:-2]]
]
]:
break
print[password]
## 9&jZ6@{0{S&h
Nếu bạn có thông tin muốn ẩn danh, bạn có thể sử dụng mã làm mù. Ví dụ: bạn có thể đang chạy thử nghiệm khoa học mà bạn muốn che giấu danh tính của người tham gia. Hoặc bạn có thể muốn loại bỏ sự thiên vị bằng cách che giấu việc một người tham gia cụ thể thuộc nhóm thử nghiệm hay nhóm kiểm soát khỏi người thử nghiệm. Tất nhiên, bạn vẫn muốn có ai đó biết ai là ai để dữ liệu có thể được phân tích sau khi được thu thập, vì vậy nên giữ một khóa liệt kê người tham gia nào đã được cung cấp mã mù nào. Khi thử nghiệm đã được chạy, dữ liệu sau đó có thể được bỏ làm mù để cho phép phân tích riêng từng nhóm thử nghiệm
Dưới đây là một số mẹo để tạo mã mù tốt
- Chỉ sử dụng các chữ cái. Nếu bạn bao gồm các số, bạn có nguy cơ nhầm lẫn số 0 với Os và số 1 với ls. Và, nếu bạn kết thúc với một mã được tạo thành hoàn toàn bằng các số, nó có thể sẽ được Python/Excel/R/bất kỳ phần mềm nào bạn đang sử dụng diễn giải dưới dạng số và được định dạng lại [ví dụ: các số 0 ở đầu có thể bị xóa hoặc phần nghìn . Nếu bạn bao gồm các ký tự đặc biệt, bạn sẽ gặp rủi ro có các mã có “+”, “-” hoặc “=” ở đầu mà các chương trình như Excel có thể diễn giải dưới dạng các câu lệnh toán học và chuyển đổi thành “#NAME?”. Ngoài ra, một mã có thể bắt đầu bằng một dấu ngoặc kép mà Excel có thể hiểu là chỉ báo chuỗi và thả
- Làm cho chúng không phân biệt chữ hoa chữ thường. Bạn không muốn “AaAa” và “aAaA” đại diện cho những thứ khác nhau. Điều đó dễ dẫn đến nhầm lẫn. Tương tự, Is và ls trông giống nhau trong nhiều phông chữ [đó là chữ i viết hoa và chữ L viết thường]. Cách dễ nhất để đảm bảo mã của bạn không phân biệt chữ hoa chữ thường là đặt tất cả chúng hoàn toàn bằng chữ hoa [hoặc hoàn toàn bằng chữ thường] và sau đó giữ nguyên như vậy
Đây là một số mã sẽ tạo ra 20 chuỗi duy nhất có độ dài 4
## pFjmt_m--A-X7jAwzAl7N1nblHTkLcgn7FYZqNc-5sM
0## pFjmt_m--A-X7jAwzAl7N1nblHTkLcgn7FYZqNc-5sM
1Nếu bạn quyết định sử dụng cả chữ cái và số thì ít nhất hãy loại trừ l và o khỏi việc lựa chọn các chữ cái. Đây là một ví dụ sử dụng