Skip to content

Latest commit

 

History

History
34 lines (19 loc) · 1.65 KB

3.5.1_Lsb.md

File metadata and controls

34 lines (19 loc) · 1.65 KB

Lsb 隐写

Lsb≠Lsb隐写

Lsb

最低有效位代表二进制数中的最小的单位,可以用来指示数字很小的变化。

那么给出一个二进制1001,其最低有效位就是拥有最小单位数值的那一位。也就是最右边一位。拥有的数值最小。

LSB隐写

图片由像素组成。像素由RGB三个通道混合而成。每个通道有256级亮度即0-255。那么一共就会有256x256x256=16777216种颜色

而人类大约可以分辨1000万种颜色,也就是说还剩6777216种颜色我们分辨不出来

还记得我们刚刚说过的么,图片由像素组成,像素由RGB通道混合而成。而LSB隐写就是修改每个像素的RGB通道的二进制数据的最低位来达到人眼分辨不出,但是仍然每个像素可以携带3Byte的数据。

接下来让我们看看如何吧A这个ASCII字符放进一个图片里 img

因为LSB是要数据放进图片像素里的,自然不能是JPG文件,JPG文件是一种有损压缩。我们修改的数据可能会在压缩过程中被破坏。

PNG图片也会被压缩,但运用的是DEFLATE算法,DEFLATE算法是同时使用了LZ77算法[1]与哈夫曼编码(Huffman Coding)[2]的一个无损数据压缩算法。[3]

不仅如此,我们也可以使用位图(BMP)文件,这种类型的文件不压缩。但是文件体积通常也很感人。

实战

参考资料

[1] LZ77算法

[2] 哈夫曼编码

[3] DEFLATE算法