Làm cách nào để tạo mật khẩu an toàn trong python?

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

  1. Sử dụng cơ bản
  2. ví dụ
  3. 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 secrets

Tạ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) # error
6 để 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(2) # generate either 0 or 1
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) # error
7 để 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(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 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) # error
8

colour = ['red', 'blue', 'green', 'purple', 'yellow']
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) # error
9 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ả

________số 8

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 255
0. 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) # error
9, 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(2) # generate either 0 or 1
secrets.randbelow(10) # generate a number from 0 to 9
secrets.randbelow(0) # error
secrets.randbelow(-10) # error
2

Đây là một ví dụ về đầu ra

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) # error
3

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 255
2 có ích cho trường hợp sử dụng như vậy

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) # error
5

Tôi nhận được kết quả sau

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) # error
6

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 1
secrets.randbelow(10) # generate a number from 0 to 9
secrets.randbelow(0) # error
secrets.randbelow(-10) # error
0
  • 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 255
    3 — 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 1
secrets.randbelow(10) # generate a number from 0 to 9
secrets.randbelow(0) # error
secrets.randbelow(-10) # error
1

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 1
secrets.randbelow(10) # generate a number from 0 to 9
secrets.randbelow(0) # error
secrets.randbelow(-10) # error
2
  • 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 255
    4— 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 255
    5 — 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 255
    6 — 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 1
secrets.randbelow(10) # generate a number from 0 to 9
secrets.randbelow(0) # error
secrets.randbelow(-10) # error
3

Tạo mật khẩu bốn từ duy nhất

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) # error
4

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 1
secrets.randbelow(10) # generate a number from 0 to 9
secrets.randbelow(0) # error
secrets.randbelow(-10) # error
5

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 255
7

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