测试环境:Windows7
开发语言:MATLAB
首先,必须明确为什么要采用图像加密和隐藏术。 在生活中,我们每个人都在交换自己的秘密,图片版权和隐私的信息。 其次,图像加密和隐写原理只要掌握并实现其原理就很简单。 本文主要阐述了基于LSB (least significant bits )的图像加密技术和混沌序列混合使用的实现原理,希望对大家有所帮助。
我知道图像由很多像素值组成。 像素值的大小为0-255,为了使隐藏写入的图像b与原始图像a一致,将各像素值转换为16位二进制数,将转换后的16位二进制数的最后一位设为零,最后按顺序或者按照自己设定的算法,将自己想写的文字转换为被黑客很容易破解。 重要的机密情报就这样被解读了就不好办了。 因此,我们的真正方法是将写入的明文转换为密文写入图像,最后对加密的图像再次进行加扰,以提高信息的安全性。 这是一个大致的流程思路,一旦知道了其原理,接下来就可以开始其具体的实现步骤。 详细过程如下。
一.图像加密过程的实现:用Matlab语言读取图像像素
2 .从文件中读取要写入图像的内容,将读取的每个字符转换为十六进制(1)将“这是不可告人的秘密”的内容加密隐藏在图像中,代码截图如下:
)2)将密文转换为十六进制的截图如下。
3 .用混沌算法对获得的明文进行加密,得到密文(1)生成混沌序列数。 截图如下。
生成混沌序列数的代码
混沌序列生成的数据矩阵
(2)读取混沌序列中的数和明文的异或来生成密文
4 .将加密的密文和字符信息的长度写入图像的最低有效位(这里为什么要获取字符的长度,是因为在解密过程中使用)
5 .获取了写入前后的图像
遮住前面的照片
隐藏后期图像
6 .对比速记式加密前后的两个图,看不出有什么不同,但是到目前为止基本的加密和速记式加密7 .速记式加密后的图像加密后的图像如下所示。
加密一次
进行多次加密
二、图像解码过程图像解码过程的本质是加密的逆过程,只需获得同一个混沌序列和同一个私钥进行解码即可。 解码后获得的明文截图如下。
整个图像的写加密过程到此结束。
详细代码请参见github:https://github.com/luhong chun/image-encryption