Python mã hóa bằng mật khẩu

Sự riêng tư? . Đã có sự gia tăng theo cấp số nhân của các nền tảng, ứng dụng internet và mức độ phổ biến của chúng

Với điều này, rất nhiều nhà phát triển đang xây dựng các dự án và nền tảng mới. Vì tất cả những thứ này đều yêu cầu một hệ thống xác thực, nên có một yêu cầu nghiêm ngặt là phải có mật khẩu bảo vệ tốt

Rốt cuộc, bạn không thể chỉ lưu trữ mật khẩu do người dùng cung cấp ở dạng thô trong cơ sở dữ liệu. Phải có một số loại mã hóa trước khi bạn lưu trữ mật khẩu trong DB

Điều này nghe có vẻ phức tạp phải không?

Đừng lo. Để đơn giản hóa quy trình này, tôi sẽ giúp bạn một phương pháp đơn giản để mã hóa mật khẩu bằng Python

Đầu tiên hãy bắt đầu với việc thiết lập dự án

  1. Cài đặt Python và pip trong hệ thống của bạn
  2. Tạo một thư mục dự án
  3. Tạo tên tệp "ứng dụng. py" bên trong thư mục
  4. Mở terminal tại thư mục và chạy-

    pip install bcrypt

  5. Nhập bcrypt trong "ứng dụng. tập tin py".
    Bcrypt là gói python sẽ giúp chúng tôi mã hóa. Bạn có thể đọc thêm về bcrypt tại Bcrypt

Ok, vậy là đã thiết lập dự án xong, hãy bắt đầu mã hóa mật khẩu

  1. Lấy một chuỗi là mật khẩu bạn chọn. Bán tại -

password = "youareSmart123"

  1. Tiếp theo, chúng ta cần tạo một chuỗi có tên "Salt. " Muối là một giá trị ngẫu nhiên mạnh về mật mã có độ dài cố định được thêm vào đầu vào của các hàm băm để tạo các giá trị băm duy nhất cho mọi thông tin. Muối được thêm vào để tạo đầu ra băm mật khẩu duy nhất ngay cả đối với người dùng sử dụng mật khẩu phổ biến. Một ví dụ về muối.

    ______3

  2. Chúng tôi sẽ sử dụng gói "bcrypt" để tạo muối. Sử dụng đoạn mã dưới đây để làm điều đó.

    ______4

  3. Bây giờ, bước cuối cùng thực sự là mã hóa mật khẩu. Để mã hóa.

    ______5

  4. Đó là nó. Nếu chúng tôi in "mật khẩu đã băm", chúng tôi sẽ nhận được đầu ra được mã hóa

Vì vậy, đây là nó cho blog này. Hy vọng bạn đã học được điều gì đó khi đọc nó. Hãy thử thực hiện phương pháp trên, bình luận xuống nếu bạn có bất kỳ câu hỏi nào và đưa ra phản hồi cho blog

Đây là một bài viết hay để đảm bảo bảo mật cấp một cho mật khẩu do người dùng chọn, nhưng bạn có biết cách thực hiện thêm một bước nữa không? . Tôi không lo lắng về việc ai đó hack thiết bị của người khác mà lo lắng về việc một số người dùng hiểu biết mở mã python của tôi, tìm các truy vấn sql của tôi cùng với db, tên người dùng và mật khẩu cũng như thực hiện các truy vấn CHỌN * của riêng họ trên . Làm cách nào để ngăn điều này xảy ra trong tệp Python?

Có những tình huống khi chúng tôi đang sử dụng mật khẩu ứng dụng trong mã của mình. Đây hoàn toàn là một thực hành phi đạo đức. Nên ẩn mật khẩu

Ở đây tôi đã sử dụng python [cryptography pkg ] để mã hóa mật khẩu và sau đó giải mã nó để sử dụng tiếp

> mật mã cài đặt pip

Hầu hết, chúng tôi đã thấy mật khẩu ứng dụng không thay đổi thường xuyên. Do đó, đã thực hiện các phương pháp dưới đây

Đặt một tệp txt đơn giản chứa CHỈ chuỗi mật khẩu

Bây giờ, như tôi đã nói, mật khẩu này sẽ không thay đổi thường xuyên, do đó, chúng tôi sẽ đọc tệp này, mã hóa mật khẩu và xóa tệp này bằng tập lệnh python đầu tiên của chúng tôi [encryptPWD. py]. Ngoài ra, tập lệnh này sẽ tạo 2 tệp khác nhau, một tệp sẽ chứa mật khẩu được mã hóa và tệp còn lại sẽ có khóa ngẫu nhiên sẽ được sử dụng để giải mã sau này

Ghi chú. để đơn giản, tôi đã tạo 2 tệp khác nhau, một tệp để lưu mật khẩu được mã hóa và tệp còn lại để giữ khóa. Nếu bạn muốn, bạn có thể lưu chúng trong một tệp và sau đó đọc cùng một tệp trong mô-đun tiếp theo

Tập lệnh python cuối cùng [decryptPWD. py] sẽ đọc 2 tệp đó [mật khẩu và khóa được mã hóa] rồi giải mã để sử dụng tiếp

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ố

Enter the string that you want to convert to the hashed string:: mystrongpassword The encrypted text or password is: b'$2b$16$mnqcnXcqeJedkgwmZ431JeLcvqo60BwHW/Fw6pVRG8iamUYWl7qYK' Do you want to continue or exit the code execution?[y/n] y Please choose one of the appropriate options:: 1. To enter a string and print the resultant hashed string for it using bcrypt. 2. To enter a string and check if it matches with the hashed password or not using bcrypt. 3. To exit from the code execution. 2 >Enter the string that you want to check against hashed string:: mystrongpassword The entered string has matched successfully with the hashed password/string. Do you want to continue or exit the code execution?[y/n] y Please choose one of the appropriate options:: 1. To enter a string and print the resultant hashed string for it using bcrypt. 2. To enter a string and check if it matches with the hashed password or not using bcrypt. 3. To exit from the code execution. 1 >Enter the string that you want to convert to the hashed string:: newpassword The encrypted text or password is: b'$2b$16$Uaer9zR3U5zbSmNsvZjsFOwlOXjWsLz0MaWNatZ/wptXW5/hwCsxK' Do you want to continue or exit the code execution?[y/n] y Please choose one of the appropriate options:: 1. To enter a string and print the resultant hashed string for it using bcrypt. 2. To enter a string and check if it matches with the hashed password or not using bcrypt. 3. To exit from the code execution. 2 >Enter the string that you want to check against hashed string:: NewPassword The entered string has not matched with the hashed password/string. Do you want to continue or exit the code execution?[y/n] y Please choose one of the appropriate options:: 1. To enter a string and print the resultant hashed string for it using bcrypt. 2. To enter a string and check if it matches with the hashed password or not using bcrypt. 3. To exit from the code execution. 1 >Enter the string that you want to convert to the hashed string:: salted_string The encrypted text or password is: b'$2b$16$jEyiUoWtN.TCnKlVDeEXxO9VJz4mWzEGr/ZifkjHCTy.PWnvm8Txy' Do you want to continue or exit the code execution?[y/n] y Please choose one of the appropriate options:: 1. To enter a string and print the resultant hashed string for it using bcrypt. 2. To enter a string and check if it matches with the hashed password or not using bcrypt. 3. To exit from the code execution. 2 >Enter the string that you want to check against hashed string:: salted_string The entered string has matched successfully with the hashed password/string. Do you want to continue or exit the code execution?[y/n] n

Như chúng ta có thể thấy rằng sau khi chạy thành công đoạn mã trên, người dùng được nhắc với ba tùy chọn được liệt kê là tùy chọn đầu tiên để nhập chuỗi và in chuỗi băm kết quả cho nó, tùy chọn thứ hai là tùy chọn giải mã chuỗi đầu vào . chúng tôi đã cung cấp các đầu vào khác nhau cho cả chức năng mã hóa cũng như giải mã được gọi và đã xác minh kết quả của cả hai chức năng mã hóa và giải mã này bằng cách in các chuỗi được mã hóa và giải mã khác nhau. và cuối cùng, người dùng đã thoát khỏi việc thực thi mã bằng cách chọn tùy chọn số 3

Ưu điểm của mã hóa

Mọi người đều lo ngại về việc di chuyển dữ liệu nhạy cảm lên đám mây vì nhiều công ty tin rằng đám mây không an toàn như trung tâm dữ liệu của chính họ. Người bên ngoài có thể truy cập dữ liệu khi nó ở trên đám mây, nhưng dữ liệu từ khách hàng và đối thủ cạnh tranh được lưu trữ ở cùng một vị trí. Các công ty yêu cầu lợi ích của đám mây do khả năng chi trả và tính linh hoạt to lớn của nó. Tính năng này bao gồm khả năng khởi động hoặc ngừng hoạt động máy chủ khi nhu cầu thị trường thay đổi. Vậy, nếu nhà cung cấp dịch vụ yêu cầu rời đi thì sao?

Nếu dữ liệu được mã hóa và cả hai khóa được sử dụng để mã hóa đều có mặt, các nhà cung cấp dịch vụ sẽ có thể truy cập dữ liệu đó. Để giải quyết vấn đề này, nên thực hiện mã hóa dữ liệu trên đám mây và giữ các khóa mã hóa ở phía người dùng. Bất kể giải pháp bảo mật khóa cơ bản như thế nào, một số công ty nhất định từ chối xử lý các khóa mã hóa. Họ có những lo ngại về sao lưu, định giá và khắc phục thảm họa

Thẻ thanh toán được sử dụng cho nhiều giao dịch khác nhau và thẻ cũng như dữ liệu liên quan phải được bảo vệ. Đa số chủ thẻ ý thức được rằng thông tin và dữ liệu cá nhân của họ được an toàn và bảo mật. Do đó, mã hóa là một trong những chiến lược hiệu quả nhất của PCI DSS [Tiêu chuẩn bảo mật dữ liệu ngành thẻ thanh toán]

Nếu vi phạm dữ liệu xảy ra và thông tin cá nhân bị xóa, các cá nhân bị ảnh hưởng phải được liên hệ. Nếu dữ liệu bị chặn là an toàn và các khóa bảo mật không bị hỏng, bất kỳ khu vực tài phán nào cũng có thông báo công khai với điều khoản bến cảng an toàn. Do đó, trong trường hợp xảy ra vi phạm, việc triển khai mã hóa và bảo vệ khóa kỹ lưỡng có thể tiết kiệm rất nhiều tiền

Nhiều tổ chức hiện cung cấp văn phòng ảo như một phần của dịch vụ internet của họ, những dịch vụ này không được bảo vệ bởi chính sự tồn tại của họ. Cướp máy và lưu trữ là một mối nguy hiểm rất thực tế. Trên máy chủ của nhiều công ty này là dữ liệu bí mật không an toàn. Các biện pháp bảo vệ mã hóa dữ liệu chống sửa đổi dữ liệu hoặc phá hủy ngoài ý muốn và các công nghệ bảo mật ngày nay đã mở rộng các khả năng

Chỉ xem xét việc cung cấp các khóa mật mã cho dữ liệu từ xa trong giờ làm việc, khiến mã trở nên vô dụng nếu mất điện

Hơn nữa, không giống như mã hóa tệp hoặc thư mục, Mã hóa Toàn bộ Đĩa [FDE] mã hóa dữ liệu trong khi nó được lưu trữ trên đĩa cứng. Nói cách khác, quy trình mã hóa được thực hiện tự động. Do đó, việc mã hóa các tệp hoặc thư mục dễ dàng hơn nhiều, nhưng bạn phải chọn các tệp hoặc thư mục mà bạn muốn mã hóa theo cách thủ công

Một số nhược điểm của mã hóa

  • Khóa mã hóa dữ liệu. Không còn nghi ngờ gì nữa, mã hóa dữ liệu là một nỗ lực to lớn đối với một chuyên gia CNTT. Càng có nhiều khóa mã hóa dữ liệu, các quản trị viên CNTT càng khó theo dõi tất cả chúng. Bạn hủy dữ liệu được kết nối với mã hóa nếu bạn mất chìa khóa để mã hóa
  • Chi phí. Mã hóa dữ liệu có thể khá tốn kém vì các hệ thống luôn cập nhật dữ liệu phải có năng lực và cải tiến để thực hiện việc này. Việc giảm hoạt động của hệ thống có thể gặp nguy hiểm nếu bạn không có hệ thống có khả năng
  • Yêu cầu phi thực tế. Nếu một công ty không nắm bắt được một số ràng buộc do công nghệ mã hóa dữ liệu áp đặt, thì có thể đặt ra các quy tắc và nguyên tắc quá mức, khiến việc mã hóa bảo mật dữ liệu gặp rủi ro
  • khả năng tương thích. Tích hợp các công nghệ mã hóa dữ liệu với các chương trình hiện tại có thể khó khăn. Điều này có thể có ảnh hưởng tiêu cực đến hoạt động bình thường của hệ thống
  • Phục hồi dữ liệu phức tạp. Việc khôi phục dữ liệu trên các ổ đĩa rất phức tạp với mã hóa toàn bộ đĩa, giống như với tất cả các loại mã hóa khác. Xem xét điều này. mã hóa sẽ là vô nghĩa nếu dữ liệu được mã hóa có thể được khôi phục dễ dàng. Do đó, việc khôi phục dữ liệu cho tệp PST, chẳng hạn như khôi phục tệp đơn lẻ, là một thách thức
  • Máy tính đang chạy chậm. Hơn nữa, khi mã hóa toàn bộ đĩa được sử dụng, tất cả các đĩa đều được mã hóa. Trong tình huống này, bạn phải sử dụng mã xác minh để giải mã đĩa bất cứ khi nào bạn cố đọc thông tin của đĩa. Rõ ràng, quy trình này sẽ khiến máy của bạn chạy chậm lại

Do đó, trong bài viết này, chúng ta đã thấy cách chúng ta có thể sử dụng thư viện bcrypt do Python cung cấp làm mô-đun để mã hóa và giải mã chuỗi đầu vào.

Làm cách nào để chuyển tên người dùng và mật khẩu trong tập lệnh Python?

Nhận tên người dùng và mật khẩu khi chạy bằng Python .
pip cài đặt getpass. con trăn. Sao chép
tên người dùng = getpass. getuser[] Python. Sao chép
userName= input['Nhập tên người dùng. '] Con trăn. Sao chép
mật khẩu = getpass. getpass[] Python. Sao chép

Có thể mã hóa tệp Python không?

Trong Python, có thể mã hóa và giải mã tệp trước khi truyền sang kênh liên lạc . Đối với điều này, bạn sẽ phải sử dụng plugin PyCrypto. Bạn có thể cài đặt plugin này bằng lệnh được cung cấp bên dưới.

Làm cách nào để mã hóa bằng AES Python?

AES yêu cầu cụm mật khẩu bí mật được gọi là “khóa” để mã hóa/giải mã dữ liệu . Bất kỳ ai có khóa đều có thể giải mã dữ liệu của bạn, vì vậy, bạn cần khóa đó phải mạnh và ẩn khỏi mọi người―chỉ chương trình phần mềm mới có thể truy cập vào dữ liệu đó. Khóa có thể dài 128, 192, 256 hoặc 512 bit.

Làm cách nào để tạo dấu hoa thị mật khẩu trong Python?

chỉ cần sao chép 'getpass_ak. py' được cung cấp trong liên kết đến thư mục Lib của python . điều này sẽ thêm * vào đầu vào mật khẩu của bạn. Lưu câu trả lời này.

Chủ Đề