在PNG中编码二进制数据?

时间:2011-05-23 20:01:51

标签: python encoding png python-imaging-library steganography

我正在寻找有关如何通过颜色将少量二进制数据(例如,大约200字节)编码为PNG的信息;基本上Hid.im.torrent个文件的作用。任何有关最佳实践的信息或跳板都会很出色。

谢谢!

1 个答案:

答案 0 :(得分:5)

在无损压缩图像中隐藏数据的基本原则是修改每个像素的低位,因此这些位总是意味着什么。

例如在R.G.B.中,您可以修改红色值中的最后一位(技术上,人眼对红色对绿色或蓝色不敏感)。

例如,让我们绘制一条8像素的线,例如每个像素的红色值都具有前一个像素的红色值+ 1

   Pixel1 = (120, 203, 391)
   Pixel2 = (121, ..., ...)
   ...
   Pixel8 = (128, ..., ...)

以二进制形式表示:

   Pixel1 = (01111000, ..., ...)
   Pixel2 = (01111001, ..., ...)
   ...
   Pixel8 = (10000000, ..., ...)

现在,让我们加密该行中的第63位:

   63 = 00011111
   # Encrypting from right to left, by writing the data to the minor bit
   Pixel1 = (0111100[0], ..., ...) -> 120
   Pixel2 = (0111100[0], ..., ...) -> 120
   Pixel3 = (0111101[0], ..., ...) -> 122
   Pixel4 = (0111101[1], ..., ...) -> 123
   Pixel5 = (0111110[1], ..., ...) -> 125
   ...
   Pixel8 = (1000000[1], ..., ...) -> 129

就是这样。您知道信息的位置以及如何提取信息。 然而,这种方法受容量的限制。