主要原理:
图片是由一个个像素组成的。每个像素由一组(r,g,b)值表示(png格式图片,多一个alpha透明度值)。而对于单个r,g或b,其范围在0~255之间,可由一个字节(8位表示)。因此,当改变最低位的值时,对于整个图片来说,其视觉效果通过肉眼看不出来的。比如一组颜色白色(255,255,255),变为(254,255,255)时,是看不出来变化的。
因此,可将一组待隐藏信息转换为二进制后,再将每个二进制码存储在图片的像素中。
原图片.png
隐藏有信息后的图片.png
实现步骤
加密
获取原图片像素(list)
使像素最低位变为偶数
待隐藏信息转换为二进制,并且对于单字节字符,当位数不够8时,在最高位补0
将二进制的待隐藏信息依次与图片中每个像素的r、g、b进行相加
解密
获取隐藏有信息的图片的像素(list)
获取像素值的最低位(隐藏的信息存储位置)
获取存储的信息的二进制值
按每8位为一组,将上述二进制转换为十进制形式
采用chr函数,将十进制转为字符并存储到字符串中
源码
# -*- coding: