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ó Show 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
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 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 bcryptNiels 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 bcryptPython 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ố <Vì vậy, trong đoạn mã được viết ở trên, chúng tôi đã tạo hai lớp sẽ được sử dụng để mã hóa và giải mã chuỗi đầu vào đã chỉ định. Chúng tôi có các hàm khác nhau được tạo để mã hóa và giải mã các tham số chuỗi đã chỉ định là các giá trị đầu vào . trong hàm chính, chúng tôi đã tạo đối tượng của các lớp mã hóa và giải mã này và được gọi là Hàm này với sự trợ giúp của các đối tượng lớp tương ứng. người dùng được cung cấp phương pháp tiếp cận dựa trên menu, từ đó anh ta có thể chọn các thao tác khác nhau như mã hóa một chuỗi đầu vào cụ thể hoặc giải mã chuỗi đầu vào hoặc anh ta có thể chọn thoát khỏi quá trình thực thi mã hiện tại tùy thuộc vào lựa chọn được cung cấp bởi Sau khi chạy thành công đoạn mã trên, bây giờ chúng ta hãy xem đầu ra được tạo bởi đoạn mã này đầu ra [email protected]:~$ python3 code.py 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:: 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óaMọ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
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 để sử dụng mật khẩu trong tập lệnh Python?Nhắc mật khẩu
. Bạn cần hỏi người dùng mật khẩu. Bạn có thể sử dụng input() , nhưng điều đó sẽ hiển thị mật khẩu trong thiết bị đầu cuối, để tránh điều đó, bạn nên sử dụng getpass thay thế. nhập người dùng getpass = getpass .
Làm cách nào để lưu trữ tên người dùng và mật khẩu trong Python?Bạn có thể lưu trữ tên người dùng/mật khẩu trên hai dòng đầu tiên của tệp văn bản thuần túy , sau đó sử dụng python để đọc khi bạn cần. Nếu tệp văn bản nằm trong thư mục kho lưu trữ, bạn nên sửa đổi. gitignore để đảm bảo nó không bị kiểm soát nguồn theo dõi. |