基于LSB算法的图像信息隐藏与检测
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于LSB算法的图像信息隐藏与检测
数字图像隐写分析
基于LSB算法的图像信息隐藏与检测
学院名称计算机科学与技术学院
专业班级
学⽣姓名
学号
指导教师
2016.05.01
基于LSB算法的图像信息隐藏与检测
摘要:LSB替换隐写基本思想是⽤嵌⼊的秘密信息取代载体图像的最低⽐特位,原来的的7个⾼位平⾯与替代秘密信息的最低位平⾯组合成含隐藏信息的新图形。
⽂章⾸先简
单叙述了BMP位图⽂件的⽂件格式,然后根据24位真彩⾊BMP位图格式与显⽰⽅式的特殊性,直接改变图像中像素的最后⼀位值来嵌⼊秘密⽂件,提出了⼀种对⽂字信息进⾏加密的有效⽅案。
关键词:LSB,信息隐藏,信息安全,BMP位图
Image information hiding and detection based on LSB
algorithm
Abstract: LSB replacement steganography basic idea is to use the embedded secret information to replace the image of the lowest bits, the original 7 high plane and the least significant bit plane of alternative secret information into new graphics containing hidden information.This paper simple describes the BMP file format of the bitmap file, and then according to the 24 true color BMP bitmap format and the particularity of display mode, directly change the values of pixels in the image of the last to embed secret files, puts forward a effective scheme of text information is encrypted.
Key words: LSB, Information hiding,information security,bit map file
⽬录
第1章绪论 (5)
1.1 LSB算法原理 (5)
第2章 LSB隐写实现 (7)
2.1 LSB隐藏过程 (7)
2.2 LSB隐写实例效果 (8)
第3章 LSB信息提取 (10)
3.1 LSB信息提取过程 (10)
3.2 LSB信息提取实例效果 (10)
参考⽂献 (13)
第1章绪论
1.1 LSB算法原理
LSB是L.F.Turner和R.G.van Schyndel等⼈提出的⼀种典型的空间域信息隐藏算法。
考虑⼈视觉上的厄不可见性缺陷,信息⼀般嵌⼊到图像最不重要的像素位上,如最低⼏位。
利⽤LSB算法可以在8⾊、16⾊、256⾊以及24位真彩⾊图像中隐藏信息。
对于256⾊图像,在不考虑压缩的情况下,每个字节存放⼀个像素点,那么⼀个像素
点⾄少可以隐藏1位信息,⼀张640*480像素的256⾊图像⾄少可隐藏640*480=307200位(38400字节)的信息。
对于真彩⾊图像,同样可以按照如上的⽅法计算可以隐藏的信息量。
由于LSB替换隐写出现最早,具有嵌⼊容量⼤、容易实现等优点,因此使⽤极为⼴泛。
下⾯通过matlab仿真证实上诉所提到的LSB替换隐写⽅法的优点。
实验过程:
1)读⼊UCID1.bmp图像。
图1-1 UCID1000库的第⼀幅图
2)提取出UCID1.bmp的8个位平⾯,如图1-2所⽰。
图1-2 (1)~(8)分别表⽰ UCID1.bmp的8个位平⾯
3)把80%的秘密信息⽐特流嵌⼊最低有效位(LSB),并⽐较原图像与嵌⼊秘密信息后的图像,如图1-3所⽰。
图1-3 原图像UCID1.bmp与嵌⼊信息的UCID1.bmp
从上⾯两幅图像来看,我们根本就看不出加密前与加密后的图像之间的差异。
虽然LSB替换隐写可以在嵌⼊量很⼤的情况下仍然保持良好的不可察觉性,但已有许多有效地通井机分析⽅法来判断图像中是否含有LSB替换隐写信息]9[。
在这⾥主要介绍卡⽅检测⽅法、RS⽅法,并单独对卡⽅检测⽅法进⾏matlab仿真。
第2章 LSB隐写实现
2.1 LSB隐藏过程
⽤秘密信息⽐特替换载体中的最不重要部分,可以达到对信息隐藏的⽬的。
在数字图像中,每个字节的最低位对图像信息的影响最⼩,因此将数字图像的最低位⽤信息⽐特替换可以实现信息隐藏。
由于载体图像的每个字节只隐藏⼀个秘密信息⽐特,所以只有当载体图像的⼤⼩是秘密信息⼤⼩的8倍以上时才能完整的将秘密信息隐藏。
图2-1 提取信息位并隐藏的⽰意图
2.2 LSB隐写实例效果
LSB的实现就是把bmp位图的数据部分的最低位以此替换成所要隐藏的信息。
实现的C语⾔代码如下:
#include "stdafx.h"
#include "stdio.h"
#include "string.h"
int main(int argc, char* argv[])
{
FILE *in,*out;
int i;
char inFileName[90],outFileName[90];
printf("请输⼊原位图⽂件的⽂件名: \n");
scanf("%s",inFileName);
printf("请输⼊处理后的⽂件的⽂件名: \n");
scanf("%s",outFileName);
if((in=fopen(inFileName,"rb"))==NULL)
{
printf("⽂件⽆法打开!\n");
return -1;
}
if((out=fopen(outFileName,"wb"))==NULL)
{
printf("⽂件⽆法打开!\n");
return -1;
}
for(i=1;!feof(in);i++)
{
if(i<=54)
{
fputc(fgetc(in),out);
}
else
{
fputc(~fgetc(in),out);
}
}
printf("图⽚处理成功!\n");
fclose(in);
fclose(out);
return 0;
}
实现效果:
图2-2 原图图2-3 处理后的图⽚
第3章 LSB信息提取
3.1 LSB信息提取过程
在隐藏了秘密信息的数字图像中,每个字节的最低位就是秘密信息⽐特位,只需将这些信息⽐特提取出来并组合,就可以恢复出原来的秘密信息。
图3-1 提取信息⽰意图
3.2 LSB信息提取实例效果
直接使⽤C语⾔代码将刚才隐写的信息显⽰出来。
#include "stdafx.h"
#include "stdio.h"
int main(int argc, char* argv[])
{
FILE *in;
char ch,fileName[90];
unsigned int i;
printf("enter fileName: \n");
scanf("%s",fileName);
if((in=fopen(fileName,"rb"))==NULL) {
printf("file open fail");
return -1;
}
fseek(in,54L,0);
do
{
ch =0
for(i=0;i<8;i++)
{
ch+=(fgetc(in)&0x01)<
}
putchar(ch);
}
while(ch);
/*while((ch=fgetc(in))!=EOF)
{
fputc(ch,stdout);
}*/
putchar('\n');
return 0;
}
图3-2 处理后的图⽚
图3-2 提取后的图像
参考⽂献
[1] 林福宗.多媒体技术基础(第2版)课程设计与学习指导[M]. 北京:清华⼤学出版社,2006
[2] 姚敏.数字图像处理[M]. 北京:机械⼯业出版社,2006
[3] 容观澳.计算机图像处理. 北京:清华⼤学出版社,2000
[4] 周新伦.数字图像处理. 北京:国防⼯业出版社,2006
[5] 吴健康.数字图像处理. 北京:邮电⼤学出版社,1989
[6] 王积分.计算机图像识别. 北京:中国铁道出版社,1988
[7] 贾永红.计算机图像处理与分析. 武汉:武汉⼤学出版社,2001
[8] 陈桂明.应⽤MATLAB语⾔处理数信号与图像处理.北京:科学出版社,2000
[9] 徐建华.图像处理与分析. 上海:上海交通⼤学出版社,1990
[10] 王润⽣.图像理解. 北京:国防科技⼤学出版社,1995
[11] 姚敏.数字图像处理. 北京:机械⼯业出版社,2006。