Trong phần này, bạn sẽ tìm hiểu các cách thích hợp để tạo mật khẩu mạnh và mã thông báo ngẫu nhiên được bảo mật bằng mật mã. Việc có các số ngẫu nhiên an toàn cho phép chúng tôi quản lý thông tin nhạy cảm, chẳng hạn như mật khẩu và mã thông báo bảo mật. Chúng tôi sẽ sử dụng mô-đun bí mật, có sẵn kể từ Python 3. 6. Các tài liệu chính thức nêu rõ
“… bí mật nên được sử dụng thay cho trình tạo số giả ngẫu nhiên mặc định trong mô-đun ngẫu nhiên, được thiết kế để lập mô hình và mô phỏng, không phải bảo mật hoặc mật mã. ”
Có ba phần trong bài viết này
- Sử dụng cơ bản
- ví dụ
- Phần kết luận
Bắt đầu nào
1. Sử dụng cơ bản
Mô-đun bí mật cung cấp một số chức năng tích hợp sẵn mà chúng tôi có thể sử dụng để tạo số và mã thông báo. Không cần thiết lập nhưng chúng tôi cần nhập mô-đun trước khi sử dụng
import secretsTạo một số ngẫu nhiên
Sử dụng hàm secrets.randbelow(2) # generate either 0 or 1
secrets.randbelow(10) # generate a number from 0 to 9
secrets.randbelow(0) # error
secrets.randbelow(-10) # error6 để tạo số. Nó chấp nhận một số nguyên và số được tạo nằm trong khoảng từ 0 đến số nguyên đầu vào trừ 1. Số nguyên đầu vào phải lớn hơn 0
secrets.randbelow(10) # generate a number from 0 to 9
secrets.randbelow(0) # error
secrets.randbelow(-10) # error
Bạn cũng có thể sử dụng hàm secrets.randbelow(2) # generate either 0 or 1
secrets.randbelow(10) # generate a number from 0 to 9
secrets.randbelow(0) # error
secrets.randbelow(-10) # error7 để tạo số ngẫu nhiên. Nó chấp nhận một số nguyên đại diện cho số bit. Số nguyên đầu vào phải lớn hơn 0
secrets.randbits(2) # generate a number from 0 to 3
secrets.randbits(4) # generate a number from 0 to 15
secrets.randbits(8) # generate a number from 0 to 255
Tạo một phần tử ngẫu nhiên từ một danh sách
Mô-đun này cũng cung cấp một cách để chúng tôi chọn một phần tử ngẫu nhiên từ một chuỗi không trống. Hãy thử dùng hàm secrets.randbelow(2) # generate either 0 or 1
secrets.randbelow(10) # generate a number from 0 to 9
secrets.randbelow(0) # error
secrets.randbelow(-10) # error8
secrets.choice(colour)
Tạo một chuỗi byte ngẫu nhiên
Hàm secrets.randbelow(2) # generate either 0 or 1
secrets.randbelow(10) # generate a number from 0 to 9
secrets.randbelow(0) # error
secrets.randbelow(-10) # error9 là sự lựa chọn hoàn hảo để tạo byte. Bạn có thể chỉ định một số nguyên làm tham số. Nó sẽ xác định một số nguyên ngẫu nhiên nếu bạn không chỉ định gì cả
Bạn sẽ thấy một chuỗi byte ngẫu nhiên như thế này
b'\x1bq\x8e\x83\x08\xb2g\x17'Tạo một chuỗi ngẫu nhiên ở dạng thập lục phân
Nếu bạn muốn một chuỗi ở dạng thập lục phân, bạn có thể sử dụng hàm secrets.randbits(1) # generate either 0 or 1
secrets.randbits(2) # generate a number from 0 to 3
secrets.randbits(4) # generate a number from 0 to 15
secrets.randbits(8) # generate a number from 0 to 2550. Cũng giống như hàm secrets.randbelow(2) # generate either 0 or 1
secrets.randbelow(10) # generate a number from 0 to 9
secrets.randbelow(0) # error
secrets.randbelow(-10) # error9, nó nhận một số nguyên dùng để tạo n byte, mỗi byte sẽ được chuyển đổi thành hai chữ số hex sau đó
secrets.randbelow(10) # generate a number from 0 to 9
secrets.randbelow(0) # error
secrets.randbelow(-10) # error2
Đây là một ví dụ về đầu ra
secrets.randbelow(2) # generate either 0 or 1secrets.randbelow(10) # generate a number from 0 to 9
secrets.randbelow(0) # error
secrets.randbelow(-10) # error3
Tạo chuỗi an toàn cho URL
Đôi khi, bạn có thể muốn một chuỗi được mã hóa Base64 cho ứng dụng web của mình. Hàm secrets.randbits(1) # generate either 0 or 1
secrets.randbits(2) # generate a number from 0 to 3
secrets.randbits(4) # generate a number from 0 to 15
secrets.randbits(8) # generate a number from 0 to 2552 có ích cho trường hợp sử dụng như vậy
secrets.randbelow(10) # generate a number from 0 to 9
secrets.randbelow(0) # error
secrets.randbelow(-10) # error5
Tôi nhận được kết quả sau
secrets.randbelow(2) # generate either 0 or 1secrets.randbelow(10) # generate a number from 0 to 9
secrets.randbelow(0) # error
secrets.randbelow(-10) # error6
2. ví dụ
Trong phần này, tôi sẽ phác thảo một số phương pháp hay nhất để tạo mật khẩu và mã thông báo an toàn. Hãy tự mình kiểm tra chúng
Tạo mật khẩu gồm 10 ký tự chữ và số
secrets.randbelow(2) # generate either 0 or 1secrets.randbelow(10) # generate a number from 0 to 9
secrets.randbelow(0) # error
secrets.randbelow(-10) # error0
- secrets.randbits(1) # generate either 0 or 1
secrets.randbits(2) # generate a number from 0 to 3
secrets.randbits(4) # generate a number from 0 to 15
secrets.randbits(8) # generate a number from 0 to 2553 — chứa cả chữ thường và chữ hoa từ A-Z
Tạo mật khẩu thập lục phân gồm 10 ký tự có dấu chấm câu
secrets.randbelow(2) # generate either 0 or 1secrets.randbelow(10) # generate a number from 0 to 9
secrets.randbelow(0) # error
secrets.randbelow(-10) # error1
Tạo mật khẩu gồm 10 ký tự với ít nhất một chữ thường, một chữ hoa và một chữ số
secrets.randbelow(2) # generate either 0 or 1secrets.randbelow(10) # generate a number from 0 to 9
secrets.randbelow(0) # error
secrets.randbelow(-10) # error2
- secrets.randbits(1) # generate either 0 or 1
secrets.randbits(2) # generate a number from 0 to 3
secrets.randbits(4) # generate a number from 0 to 15
secrets.randbits(8) # generate a number from 0 to 2554— Xác định xem ký tự có phải là chữ thường không - secrets.randbits(1) # generate either 0 or 1
secrets.randbits(2) # generate a number from 0 to 3
secrets.randbits(4) # generate a number from 0 to 15
secrets.randbits(8) # generate a number from 0 to 2555 — Xác định xem ký tự có phải là chữ hoa không - secrets.randbits(1) # generate either 0 or 1
secrets.randbits(2) # generate a number from 0 to 3
secrets.randbits(4) # generate a number from 0 to 15
secrets.randbits(8) # generate a number from 0 to 2556 — Xác định xem ký tự có phải là chữ số không
Tạo mật khẩu gồm 10 ký tự với ít nhất hai chữ hoa và hai chữ số
secrets.randbelow(2) # generate either 0 or 1secrets.randbelow(10) # generate a number from 0 to 9
secrets.randbelow(0) # error
secrets.randbelow(-10) # error3
Tạo mật khẩu bốn từ duy nhất
secrets.randbelow(2) # generate either 0 or 1secrets.randbelow(10) # generate a number from 0 to 9
secrets.randbelow(0) # error
secrets.randbelow(-10) # error4
Tạo một URL tạm thời với mã thông báo bảo mật để đặt lại mật khẩu
secrets.randbelow(2) # generate either 0 or 1secrets.randbelow(10) # generate a number from 0 to 9
secrets.randbelow(0) # error
secrets.randbelow(-10) # error5
3. Phần kết luận
Hãy tóm tắt những gì chúng ta đã học ngày hôm nay. Chúng tôi bắt đầu khám phá các chức năng cơ bản được cung cấp bởi mô-đun secrets.randbits(1) # generate either 0 or 1
secrets.randbits(2) # generate a number from 0 to 3
secrets.randbits(4) # generate a number from 0 to 15
secrets.randbits(8) # generate a number from 0 to 2557
Sau đó, chúng tôi đã thử nghiệm các chức năng để tạo một số mật khẩu và mã thông báo ngẫu nhiên ở dạng mã thông báo chuỗi hoặc byte
Cuối cùng, chúng tôi đã thử chơi với mô-đun và tạo một vài loại mật khẩu khác nhau mạnh và bảo mật
Xin lưu ý rằng bạn không nên lưu trữ mật khẩu của mình trong bất kỳ tệp văn bản thuần túy hoặc tệp được mã hóa nào có thể dễ dàng khôi phục. Chúng nên được muối và băm bằng hàm băm một chiều, không thể đảo ngược