Computer >> Máy Tính >  >> Lập trình >> Python

Cách mã hóa và giải mã dữ liệu bằng Python

Giới thiệu

Mật mã là gì? Mật mã giải quyết việc chuyển đổi văn bản thuần túy thành văn bản mật mã được gọi là mã hóa dữ liệu và văn bản mật mã trở lại văn bản thuần túy được gọi là giải mã dữ liệu.

Chúng tôi sẽ sử dụng mô-đun fernet trong gói mật mã để mã hóa và giải mã dữ liệu bằng Python. Trong khi sử dụng mô-đun fernet, một khóa duy nhất được tạo mà không có khóa này bạn không thể đọc hoặc thao tác dữ liệu được mã hóa.

Bây giờ bạn đã biết những gì chúng tôi sẽ giải quyết, hãy bắt đầu.

Bắt đầu

Mô-đun mật mã không được đóng gói với Python, có nghĩa là bạn sẽ phải cài đặt nó bằng trình quản lý gói pip. Để làm như vậy, hãy khởi chạy thiết bị đầu cuối của bạn và nhập mã bên dưới.

 mã hóa cài đặt pip 

Sau khi đã tải xuống và cài đặt gói, bạn có thể nhập các mô-đun của nó.

Chúng tôi sẽ sử dụng mô-đun fernet để mã hóa và giải mã dữ liệu. Vì vậy, hãy để chúng tôi nhập nó vào tập lệnh Python.

 from cryptography.fernet import Fernet 

Lưu ý - Đảm bảo rằng bạn viết hoa chính xác.

Bạn đã sẵn sàng để bắt đầu viết tập lệnh của mình.

Tạo khóa

Để bắt đầu mã hóa dữ liệu, trước tiên bạn phải tạo khóa fernet .

 key =Fernet.generate_key () f =Fernet (key) 

Trong các dòng trên, chúng tôi đã tạo một khóa bằng cách sử dụng phương thức create_key () và sau đó gán khóa đó cho một biến “f” ở dòng tiếp theo.

Vậy là xong, bây giờ bạn đã có một khóa được lưu trữ trong một biến sẵn sàng để sử dụng.

Chúng tôi có thể in chìa khóa và cất giữ nếu cần. Đảm bảo sử dụng chức năng giải mã trong khi in.

 print (key.decode ()) 

Đầu ra

 Bq64GE −− 93K1RVro4go1frN − 8twBSvXdbCPSPLIKz9U =

Mã hóa dữ liệu

Để mã hóa dữ liệu từ khóa trên, bạn phải sử dụng phương pháp mã hóa.

coded_data =f.encrypt (b "Thư này đang được mã hóa và không thể xem được!") 

Và thế là xong, câu trên đã được mã hóa.

Để xem tin nhắn được mã hóa của mình, bạn phải in nó.

 in (mã hóa_data) 

Đầu ra

 b'gAAAAABgILy91p_wqMntdT3mDkh0IBXSLjuBMQAfnGZAFkZCX1U6Q7TU2PthgFBwVz0QbKXpuNTHRzAgbdDV4zfuuzkGMQAfnGZAFkZCX1U6Q7TU2PthgFBwVz0QbKXpuNTHRzAgbdDV4zfuuzkGMQAfnGZAFkZCX1U6Q7TU2PthgFBwVz0QbKXpuNTHRzAgbdDV4zfuuzkGCXzVDKH2 

Lưu ý - Chúng ta đã có b trước câu để chuyển nó thành định dạng byte. Bạn cũng có thể chọn sử dụng phương thức encode ().

Giải mã dữ liệu

Bây giờ bạn đã có văn bản mật mã, hãy để chúng tôi xem cách chúng tôi có thể chuyển nó trở lại văn bản có thể đọc được.

Chúng tôi có thể giải mã bằng phương pháp giải mã trong mô-đun fernet.

 decrypted_data =f.decrypt (dữ liệu được mã hóa) # f là biến có giá trị của key.print (dữ liệu được giải mã) 

Đầu ra

 b'Thông báo này đang được mã hóa và không thể xem được! '

Lưu ý - Nếu bạn nhìn vào kết quả đầu ra ở trên, bạn có thể nhận thấy rằng có b ’trước bản rõ được in, điều này là do dữ liệu được mã hóa đang được chuyển đổi lại thành định dạng byte. Để chỉ nhận được văn bản thuần túy, chúng ta cần sử dụng hàm giải mã.

 print (decrypted_data.decode ()) 

Đầu ra

 Thư này đang được mã hóa và không thể xem được! 

Lưu ý - Bạn có thể mã hóa và giải mã dữ liệu bằng cùng một khóa. Đó là, nếu bạn in giá trị của khóa và lưu nó. Bạn có thể sử dụng cùng một khóa bằng cách gán nó cho một biến. Ví dụ ->

 f =Fernet (Bq64GE - 93K1RVro4go1frN-8twBSvXdbCPSPLIKz9U =) # Giá trị của một khóa thực được cung cấp. 

Ví dụ

 from cryptography.fernet import Fernetkey =Fernet.generate_key () print ("Key:", key.decode ()) f =Fernet (key) encised_data =f.encrypt (b "Thư này đang được mã hóa và không thể được đã thấy! ") print (" Sau khi mã hóa:", encrypted_data) decrypted_data =f.decrypt (dữ liệu được mã hóa) print (decrypted_data) print (" Sau khi giải mã:", decrypted_data.decode ()) 

Đầu ra

 chính:u4dM7xw8sNNU3Rm_lwDbixudWSeaM0Z4TTDdQNKsouI =Sau khi mã hóa:b'gAAAAABgIL3_qbfM_oMgQn653gpk6a7hqxXiR0dl0vrmOmqnr5b6MqrsjGkK1IknxMLLtOCq6_YlX4x3nBedbZqtCqy4os55pttrl-pBO6-dJf6kVP50IpIaKSXbpAsuWl4h_2o_E-4YEqZ5kkgxWrwnqojmkMyuSQ =='b'This tin nhắn đang được mã hóa và không thể nhìn thấy!' Sau khi giải mã:Thông báo này đã được mã hóa và không thể nhìn thấy  

Kết luận

Bây giờ bạn đã học cách mã hóa và giải mã dữ liệu bằng cách sử dụng gói mật mã trong Python.

Bạn thậm chí có thể lưu khóa dưới dạng tệp .txt và sau đó truy xuất nó để mã hóa và lưu trữ mật khẩu hoặc giải mã mật khẩu từ cơ sở dữ liệu để xác minh xem nó có khớp hay không. Có nhiều trường hợp khác mà bạn có thể sử dụng điều này, có thể là một dự án nhỏ hoặc một dự án quy mô lớn.

Để biết thêm thông tin về mô-đun mật mã, bạn có thể đọc qua tài liệu chính thức của họ tại - https://pypi.org/project/cryptography/