Trong hướng dẫn sau, chúng ta sẽ tìm hiểu về gói mật mã với sự trợ giúp của các ví dụ khác nhau trong ngôn ngữ lập trình Python
Vì vậy, chúng ta hãy bắt đầu
Hiểu gói mật mã
Mật mã là thực hành bảo mật thông tin hữu ích trong quá trình truyền dữ liệu từ máy tính này sang máy tính khác hoặc lưu trữ dữ liệu trên máy tính. Mật mã học liên quan đến việc mã hóa văn bản thuần túy thành bản mã và giải mã bản mã thành văn bản thuần túy. Python cung cấp hỗ trợ cho gói mật mã cho phép chúng tôi mã hóa và giải mã dữ liệu. Mô-đun fernet của gói mật mã có các chức năng cốt lõi để tạo khóa, mã hóa văn bản thuần túy thành bản mã và giải mã bản mã thành văn bản thuần túy với sự trợ giúp của các phương thức mã hóa [] và giải mã [] tương ứng
Làm cách nào để cài đặt gói mật mã Python?
Để cài đặt gói Python, chúng tôi cần 'pip', một khung để quản lý các gói cần thiết để cài đặt các mô-đun từ các kho lưu trữ công khai đáng tin cậy. Khi chúng tôi có 'pip', chúng tôi có thể cài đặt thư viện mật mã bằng lệnh từ dấu nhắc lệnh Windows [CMD] hoặc thiết bị đầu cuối như hình bên dưới
cú pháp
Xác minh cài đặt
Sau khi mô-đun được cài đặt, chúng ta có thể xác minh nó bằng cách tạo một tệp chương trình Python trống và viết câu lệnh nhập như sau
Tập tin. kiểm chứng. py
Bây giờ, hãy lưu tệp trên và thực thi nó bằng lệnh sau trong một thiết bị đầu cuối
cú pháp
Nếu tệp chương trình Python ở trên không trả về bất kỳ lỗi nào, mô-đun đã được cài đặt đúng cách. Tuy nhiên, trong trường hợp có ngoại lệ, hãy thử cài đặt lại thư viện và cũng nên tham khảo tài liệu chính thức của thư viện
Hiểu về Fernet [mã hóa đối xứng]
Fernet là một triển khai của mật mã xác thực đối xứng [còn gọi là "khóa bí mật"]. Fernet đảm bảo rằng chúng tôi không thể thao tác hoặc đọc dữ liệu được mã hóa bằng cách sử dụng nó nữa nếu không có khóa. Fernet cũng cung cấp hỗ trợ cho việc thực hiện xoay vòng khóa thông qua MultiFernet
Bây giờ chúng ta hãy xem lớp Fernet và một số phương thức để hiểu chi tiết về khái niệm Mật mã
mật mã lớp. dương xỉ. Dương xỉ [chìa khóa]
Lớp này cung cấp các phương tiện để mã hóa cũng như giải mã. Lớp này chấp nhận khóa làm tham số đầu vào. Tham số khóa này là khóa 32 byte được mã hóa base64 an toàn cho URL. Điều này phải được giữ bí mật. Bất kỳ ai có khóa này đều có thể tạo và đọc tin nhắn
Bây giờ, trước khi chúng ta xem một số phương thức của lớp Fernet, chúng ta hãy xem xét một ví dụ đơn giản chứng minh việc sử dụng nó
ví dụ 1
đầu ra
Encrypted Message: b'gAAAAABiZAj1lcmLXPbRJng9wxgowFB731MLUFu-nstC8Sdnzn24y_lhu_h1QmR5N68d_DdpH8mIGNF6Y-7PgSmgUYkxwouw7R80lWk1k9IPp7MiKtv5O3OWmG6gk4rK4k5iNzE5sPd-L_ns0Zn8nmG2Zr--QDUi2Q==' Decrypted Message: b'Hello, Students! Welcome to Python tutorial at Javatpoint.com'
Giải trình
Trong đoạn mã trên, chúng tôi đã nhập lớp Fernet từ mô-đun fernet của gói mật mã. Sau đó, chúng tôi đã sử dụng phương thức lớp được gọi là generate_key[] để tạo khóa. Sau đó, chúng tôi đã sử dụng khóa này để chuyển đổi văn bản thuần túy thành văn bản mã hóa với sự trợ giúp của phương thức mã hóa [] và in thông báo được mã hóa. Sau đó, chúng tôi lại sử dụng khóa này để chuyển đổi bản mã thành văn bản thuần túy với sự trợ giúp của phương thức decrypt[]. Cuối cùng, chúng tôi đã sử dụng phương thức giải mã [] để chuyển đổi tin nhắn từ byte thành chuỗi và in nó cho người dùng
mật mã là một gói cung cấp các công thức và nguyên hàm mật mã cho các nhà phát triển Python. Mục tiêu của chúng tôi là để nó trở thành “thư viện tiêu chuẩn mật mã” của bạn. Nó hỗ trợ Python 3. 6+ và PyPy3 7. 2+
mật mã bao gồm cả công thức nấu ăn cấp cao và giao diện cấp thấp cho các thuật toán mã hóa phổ biến như mật mã đối xứng, bản tóm tắt thông báo và hàm dẫn xuất chính. Ví dụ: để mã hóa thứ gì đó bằng công thức mã hóa đối xứng cấp cao của mật mã
Kerberos. Kerberos là một giao thức nhận dạng và xác thực được phát triển tại MIT và được mô tả trong RFC 1510, được thiết kế để hoạt động trong môi trường gồm các máy trạm riêng lẻ không an toàn và một vài máy chủ đáng tin cậy. Giao thức Kerberos khá phức tạp và chuyên biệt, do đó, có thể không đáng để nỗ lực thực sự triển khai RFC trong Python. Thay vào đó, sẽ đơn giản hơn nhiều nếu viết một mô-đun trình bao xung quanh các thủ tục thư viện thích hợp cho Kerberos phiên bản 4 hoặc 5