Làm cách nào để sử dụng mật khẩu trong Python?

Mã hóa là điều cần thiết vì nó cho phép bạn bảo vệ an toàn dữ liệu mà bạn không muốn người khác xem. Các doanh nghiệp sử dụng nó để bảo vệ bí mật kinh doanh, chính phủ sử dụng nó để bảo vệ thông tin bí mật và nhiều người sử dụng nó để bảo vệ thông tin cá nhân để tránh bị đánh cắp danh tính. Để giữ thông tin đăng nhập của người dùng trong cơ sở dữ liệu một cách an toàn, cần phải mã hóa mật khẩu. Bất kỳ ai có quyền truy cập vào cơ sở dữ liệu người dùng trên máy chủ của công ty (bao gồm cả tin tặc) có thể chỉ cần kiểm tra mọi mật khẩu được lưu trữ nếu mật khẩu không được mã hóa. Nếu không có mã hóa mật khẩu, ngay cả mật khẩu mạnh gồm 32 ký tự được tạo bằng trình tạo mật khẩu an toàn cũng vô nghĩa. Nếu mật khẩu của bạn được đọc trên máy chủ, bất kỳ ai cũng có thể sử dụng nó bằng cách sao chép và dán nó-bất kể mật khẩu đó dài hay khó

Trước khi lưu trữ mật khẩu của bạn trên máy chủ, quá trình mã hóa sẽ xáo trộn mật khẩu đó. Vì vậy, thay vì mật khẩu123, nếu ai đó hack máy chủ, họ sẽ tìm thấy một chuỗi ký tự và số ngẫu nhiên

Hiểu mã hóa mật khẩu

Để mô tả thành công mã hóa mật khẩu, trước tiên chúng ta phải hiểu ngôn ngữ. Một số khái niệm có thể mới, vì vậy đây là tóm tắt ngắn gọn về biệt ngữ mã hóa mật khẩu

  • Một chuỗi bit ngẫu nhiên được sử dụng để khóa và mở khóa mật khẩu. Bạn sẽ nhận được khóa riêng và khóa chung, mã hóa và giải mã dữ liệu theo nhiều cách khác nhau, nhưng chúng tôi sẽ không quá kỹ thuật với khóa
  • Chút ít. Trạng thái logic có thể có một trong hai giá trị, chẳng hạn như 1/0, đúng/sai, có/không hoặc bật/tắt
  • Khối (còn được gọi là mật mã khối). Một thuật toán xác định hoạt động trên các khối bit có độ dài cố định
  • hàm băm. Thuật toán mã hóa và giải mã mật khẩu bằng khóa. Hàm băm là một đoạn mã được thực thi bất cứ khi nào người dùng lưu mật khẩu hoặc đăng nhập vào ứng dụng
  • Hàm băm là thuật toán sử dụng khóa để mã hóa và giải mã mật khẩu. Khi ai đó lưu mật khẩu hoặc đăng nhập vào một ứng dụng, hàm băm chỉ đơn giản là một đoạn mã thực thi
  • Băm. Mật khẩu của bạn được thể hiện bằng một dãy số và ký tự ngẫu nhiên. Để xác thực, hàm băm sử dụng hàm băm của bạn thay vì mật khẩu thô
  • Muối là sự kết hợp của các chữ cái và số được thêm vào hàm băm

Hàm băm tạo ra phiên bản băm của mật khẩu mới và lưu nó trên máy chủ khi bạn lưu nó. Hàm băm tạo lại hàm băm mỗi khi bạn đăng nhập bằng mật khẩu của mình để xác định xem nó có khớp với mật khẩu đã lưu không. Thuật toán vượt qua xác thực và đăng nhập cho bạn nếu giá trị băm khớp

Ví dụ

  • mật khẩu ban đầu. [email được bảo vệ])RD
  • mật khẩu băm. 6AF1CE202340FE71BDB914AD5357E33A6982A63B

Mật khẩu băm đơn giản không chống hack, mặc dù chúng có vẻ ngoài. Thuật toán băm tạo ra một hàm băm riêng biệt cho mỗi mật khẩu, không phải cho mỗi người dùng. Do đó, nếu nhiều người dùng có cùng mật khẩu, Pa$$w0rd123, hàm băm sẽ giống hệt nhau. Các kỹ sư sử dụng mật khẩu muối để vượt qua lỗ hổng mã hóa này, đảm bảo rằng mỗi hàm băm là duy nhất ngay cả khi mật khẩu giống nhau

Mã hóa mật khẩu ẩn mật khẩu của người dùng, khiến chúng khó đoán hoặc giải mã. Đó là một bước quan trọng trong việc tạo phần mềm cơ sở người dùng an toàn. Bạn không thể bỏ qua bước này, cho dù bạn đang sử dụng Flask hay một khung Python nhẹ khác. Đây là nơi bcrypt hữu ích

Cách thức hoạt động của bcrypt

Niels Provos và David Mazières đã tạo thuật toán băm mật khẩu bcrypt, dựa trên mật mã Blowfish. Hàm bcrypt là thuật toán băm mật khẩu mặc định của OpenBSD. Bcrypt có sẵn bằng C, C++, C#, Java, JavaScript, PHP, Python và nhiều ngôn ngữ lập trình khác. Bcrypt là một thư viện băm đa ngôn ngữ cung cấp mã hóa mật khẩu có một không hai. Theo mặc định, nó tạo thêm các ký tự ngẫu nhiên (muối) khi mã hóa chuỗi của bạn để cải thiện tính bảo mật cho mật khẩu của bạn. Bạn cũng có thể cho biết mình muốn thêm bao nhiêu ký tự bổ sung vào chuỗi đến dưới dạng tùy chọn. Thư viện bcrypt chỉ đọc mã byte, không đọc chuỗi thô. Để bắt đầu, bạn sẽ mã hóa một chuỗi mật khẩu đến trước khi chuyển nó cho bcrypt để được mã hóa. Mã hóa không giống như mã hóa. Nó chỉ đơn thuần đảm bảo rằng một văn bản có thể đọc được bằng máy trước khi bị che giấu bởi một kỹ thuật mã hóa

Mã hóa mật khẩu bằng Python với bcrypt

Python làm cho việc mã hóa mật khẩu bcrypt trở nên đơn giản. Chúng tôi sẽ tập trung vào cách đạt được nó mà không cần khuôn khổ. Tuy nhiên, nếu bạn hiểu cách lưu và đọc thông tin nhập của người dùng từ cơ sở dữ liệu, quy trình này sẽ tuân theo quy trình tương tự trong các khung

Mã số

Chủ đề