利用三个简单的PHP脚本实现图像隐写

背景介绍

隐写术是一种抗数据以隐藏的方式来记录并传输的技术,也有人称之为艺术或科学,隐写术的目的是隐蔽的传输信息,除了发送者和预期的接收者之外,没有人会察觉到消息的存在。

图像隐写术是一种在图像中隐藏数据的技术,可以防止非预期用户检测到这些隐藏的消息或数据。

相关理论

计算机上显示的图像是由一个个像素组成的 每个像素由3个字节表示,第一个参数为红色值,第二个参数为绿色,第三个参数为蓝色值,这三种颜色的组合决定了像素显示出来的实际颜色。

图像是由称为像素的小点组成的。每个像素表示为3个字节:一个为红色,一个为绿色,一个为蓝色。这三种颜色的组合决定了像素显示的实际颜色。

红色:

二进制:11001001

十进制:201

绿色:

二进制:11111 000

十进制:248

蓝色:

二进制:000000 11

十进制:3

图像隐写术的原理

图像隐写术的基本思想在于人眼无法识别出最小有效位(Least Significant Bit,LSB)的变化。因此,可以通过修改RGB的LSB的值来存储想要隐藏的消息,外观看起来不影响图像的颜色。

不妨举一个具体的例子,假设我们想在图像中隐藏1101,而且只改变代表蓝色的LSB的值。当然了,也可以改变所有红色、绿色和蓝色的LSB值,这样一来,就可以隐藏更多的信息了。

首先获取到图像中每个像素的RGB值。因为我们想要隐藏4bit的数据,而且我们计划改变蓝色组件,所以我们需要选取图像中的4个像素。

假设图像的前4个像素的RGB值为:

11001100 10010001 00101011

00011000 11110000 11111110

11100010 00100101 01010101

11111101 00001010 01000011

此时,将每个像素的RGB值的最后一位替换为“1101”,如此一来,这四个像素的新的RGB值为:

11001100 10010001 00101011

00011000 11110000 11111111

11100010 00100101 01010100

11111101 00001010 01000011

蓝色高亮部分显示了隐藏在图像中的消息。

接下来,将新的RGB值设置为像素,由于变化非常细微,人眼很难识别出来与原图的差别。

加密过程已经完成了,解密过程也特别简单,获取图像每个像素的RGB值,进而获取到对应的LSB,即隐藏的信息。

PHP脚本

前文讲述了一个最简单的图像隐写,这个过程可以通过3个PHP脚本来实现:

encrypt.php

decrypt.php

functions.php

视频资料

原创文章,作者:猫小编,如若转载,请注明出处:http://www.mottoin.com/107395.html

发表评论

登录后才能评论

联系我们

021-62666911

在线咨询:点击这里给我发消息

邮件:root@mottoin.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code