Trong bài viết này, chúng ta sẽ tìm hiểu về steganography dựa trên hình ảnh sử dụng Python. Steganography là phương pháp giấu tin văn bản phía sau audio, video và hình ảnh. Điều này được dùng để tăng cường bảo mật và bảo vệ khỏi các yêu cầu bản quyền sai lệch.
Chúng ta đạt được điều này nhờ tính năng encoding có sẵn trong module stepic trong Python. Để hiển thị và xem, chúng ta dùng PIL (Python Imaging Library) có sẵn trong Python.
IDE ưu tiên − Jupyter notebook
Import tất cả các dependency:
>>> from PIL import Image
>>> import stepic
Trong bài viết này, chúng ta sẽ mã hóa văn bản trên hình ảnh dưới đây. Vui lòng tải hình ảnh bên dưới và lưu dưới tên "logo.png" trong thư mục localhost của Jupyter notebook.

Bạn có thể dùng bất kỳ hình ảnh nào bạn muốn. Chỉ cần chỉ định đường dẫn hình ảnh của bạn trong dấu ngoặc kép.
>>> img = Image.open('logo.png')
>>> img.show()
Hàm Image cho phép mở "hình ảnh" mà steganography cần thực hiện. Hàm .show() cho phép xem hình ảnh dưới dạng popup như hình bên dưới.

Bây giờ sử dụng module stepic, chúng ta mã hóa một thông điệp thành dữ liệu nhị phân 8-bit sử dụng giá trị ASCII. Để mã hóa, hàm .encode() được dùng, chấp nhận hai tham số: hình ảnh và thông điệp.
Chúng ta dùng hàm .save() để lưu thông điệp ẩn vào hình ảnh gốc.
>>> img1 = stepic.encode(im, b'Tutorialspoint')
>>> img1.save('logo.png', 'PNG')
Bây giờ hãy hiển thị hình ảnh đã mã hóa.
>>> img1 = Image.open('logo.png')
>>> img1.show()

Tôi nghĩ bạn không quan sát thấy sự thay đổi nào giữa hai hình ảnh. Điều này là vì thông điệp được ẩn và không hiển thị trực tiếp.
Để xác minh rằng bạn đã mã hóa thành công thông điệp, hãy xem qua code dưới đây.
>>> im2 = Image.open('logo.png')
>>> message_hidden = stepic.decode(im2)
>>> print(message_hidden)
'Tutorialspoint'
Ở đây thông điệp ẩn/đã mã hóa được hiển thị bởi bộ giải mã tích hợp của module stepic trong Python.
Kết luận
Trong bài viết này, chúng ta đã tìm hiểu về Steganography dựa trên hình ảnh sử dụng module stepic và PIL trong Python 3.x hoặc các phiên bản trước đó.