信息隐藏的算法实现_课程设计Word文档格式.docx
《信息隐藏的算法实现_课程设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《信息隐藏的算法实现_课程设计Word文档格式.docx(8页珍藏版)》请在冰点文库上搜索。
由于密文是一堆乱码,攻击者监视着信道的通信,一旦截获到乱码,就可以利用已有的对各种密码体制的攻击方法进行破译,所以信息加密保护的是信息的内容。
而信息隐藏则不同,秘密信息被嵌入宿主信息中,并且不损坏宿主载体的信息,攻击者无法直观地判断他所监视的信息中是否含有秘密信息,它隐藏了信息的存在形式。
因此信息隐藏领域已经成为信息安全的焦点,本文主要研究如何把文本文件、WORD文件、JPG文件、写字板文件嵌入位图文件(.BMP)的方法及算法实现。
[关键词]信息安全隐藏嵌入信息
1.绪论
现代信息隐藏技术是由古老的隐写术(Steganography)发展而来的,隐写术一词来源于希腊语,其对应的英文意思是“Coveredwriting”。
隐写术的应用实例可以追溯到非常久远的年代。
被人们誉为历史学之父的古希腊历史学家希罗多德(Herodotus,486—425),在其著作中讲述了这样一则故事:
一个名叫Histaieus的人筹划着与他的朋友合伙发起叛乱,里应外合,以便推翻波斯人的统治。
他找来一位忠诚的奴隶,剃光其头发并把消息文刺在头皮上,等到头发又长起来了,把这人派出去送“信”,最后叛乱成功了。
1.1信息隐藏的概念
信息隐藏(InformationHiding):
主要研究如何将某一机密信息秘密隐藏于另一公开的信息中,然后通过公开信息的传输来传递机密信息。
攻击者则难以从公开信息中判断机密信息是否存在,难以截获机密信息,从而能保证机密信息的安全。
1.2信息隐藏技术的组成
信息隐藏技术主要由下述两部分组成:
1)信息嵌入算法:
它利用密钥来实现秘密信息的隐藏。
2)隐蔽信息的提取算法:
它利用密钥从隐蔽载体中检测/恢复出秘密信息。
在密钥未知的前提下,第三者很难从隐秘载体中发现秘密信息。
2.编程思想
首先,将隐蔽载体文件(位图文件)装载进一个缓冲区pbmfh中,将所要隐藏的信息文件以二进制读方式也装载进一个缓冲区buffer中。
其次,在嵌入信息时,将buffer中一个字节(8bit)的信息存入pbmfh中的8个字节中,并且保证这8个字节中的每个字节对2取模后与buffer中当前字节对应的位(8个字节对应
8bit即对应一个字节)相同。
具体实现是:
将所要隐藏的文件的大小写入pbmfh缓冲区的
0X0006地址处(以便提取信息时使用),再将所要隐藏的文件的格式写入pbmfh缓冲区
0X0008地址处,从0X019A地址处开始读取位图文件的数据信息,如果pbmfh中的0X019A地址处的内容对2取模后与当前buffer中的内容的最高位不相同并且当前buffer中的内容也
为0,则将pbmfh中的0X019A地址处的内容减1,否则pbmfh中的0X019A地址处的内容不变,接着从pbmfh中读取下一个字节,将该字节内容与当前buffer中的内容的次高位做上述判断,连续读取8个字节后,将指向buffer缓冲区的指针加1,将所要隐藏的文件的大小length
减1,重复上述过程,直到length为0时嵌入信息过程完成。
然后保存嵌入了信息后的位图文件。
最后,在提取信息时,把嵌有机密信息的位图文件装载进缓冲区pbmfh中,从pbmfh缓冲区的0X0006地址处读取隐藏了信息的文件的大小并存入length中,从0X0008地址处读取隐藏了信息的文件的格式,从该缓冲区中一次读取8个字节,将这8个字节对2取模后,乘以各自的权(即128,64,32,16,8,4,2,1)后相加,得到原始文件中的一个字节并存入
DEbuffer缓冲区中,将指向DEbuffer缓冲区的指针加1,将length的大小减1,重复上述过程,直到length为0时提取信息过程完成。
最后将DEbuffer缓冲区的内容以二进制方式写入文件中,保存该文件。
2.1程序流程图
2.2主要算法
1)嵌入隐藏信息的函数实现HideInformation(intlength)
/*************************************************************************
函数名:
HideInformation
入口参数:
length
出口参数:
TRUE/FALSE
功能:
根据要隐藏文件的大小隐藏信息,若隐藏成功,返回TRUE,否则返回FALSE。
**************************************************************************/BOOLHideInformation(intlength)//隐藏信息
{unsignedintOpAND[8]={128,64,32,16,8,4,2,1};
//按位与&
操作chartempbuffer=0;
inti;
if(length==0)//空文件returnFALSE;
while(length!
=0)//嵌入信息过程
{
for(i=0;
i<
8;
i++)
if((tempbuffer=(*buffer)&
OpAND[i])==0)//为0
if(abs(*data)%2!
=0&
&
*data!
=0)
*data=*data-1;
//保证原位图信息取模后为0elseif(*data==0)
*data=*data;
//不变
}
else//为1
if(*data%2!
=1&
//保证原位图信息取模后为1elseif(*data==0)
*data=*data+1;
//对原数据为0的处理,保证原位图信息取模后为1
data=data+1;
buffer=buffer+1;
length=length-1;
returnTRUE;
2)提取隐藏信息的函数实现DistillInformation(intlength)
*************************************************************
DistillInformation
根据所要提取文件的大小length进行信息提取,若提取成功,返回TRUE,否则返回FALSE。
*************************************************************/BOOLDistillInformation(intlength)//提取信息
unsignedintOpAND[8]={128,64,32,16,8,4,2,1};
操作intsum;
//保存每个字符的ASCII码
if(length==0)returnFALSE;
=0)//解密过程
sum=0;
//记录文本文件中的字符的ASCII码for(i=0;
=7;
if((*data)%2==0)
sum=sum+0*OpAND[i];
//计算字符的ASCII码
elsesum=sum+1*OpAND[i];
data=data+1;
*DEbuffer=(char)sum;
DEbuffer=DEbuffer+1;
3.程序运行
通过嵌入算法将文本文件(.TXT)、WORD文件(.DOC)、写字板文件(.RTF)、JPG图片格式文件隐藏在位图文件(.BMP)的隐蔽载体中,保存此位图文件,再用提取算法将此位图文件中的隐藏信息提取出来,并将提取出来的信息保存为其原来格式。
(注:
所要隐藏的文件最大为64K)。
1)程序界面
2)帮助界面
4.总结
在信息隐藏的研究中,主要研究信息隐藏算法与隐蔽通信。
在信息隐藏算法中,主要有空间域算法和变换域算法。
最典型的空间域信息隐藏算法为LSB算法(本文也属于LSB算法)
,最典型的变换域算法是小波变换算法。
LSB算法因其基本原理限制,所隐藏的信息极为脆弱,无法经受一些无损和有损的信号处理。
由于LSB算法的鲁棒性比较差,相关的研究改进工作
都是提高其鲁棒性。
对于小波变换算法,由于小波变换具有良好的视频局部特性,加上
JPEG2000和MPEG4压缩标准使用小波变换算法取得了更高的压缩率,使得基于小波变换的信息隐藏技术成为目前研究的热点。
信息隐藏可以分为四个阶段:
预处理阶段、嵌入阶段、传输阶段和提取阶段。
预处理阶段通过一些优秀的加密算法先对机密信息进行加密处理,在嵌入阶段,使用基于LSB或小波的隐藏信息的算法,将加密过的机密信息嵌入宿主载体信息中,进行二级安全保护,在传输阶段,以隐藏通信的发送方和接收方来进行隐蔽通信,进行三级
安全保护,从而使信息通信的整个过程都是比较安全的,在提取信息阶段,先通过提取算法进行机密信息的提取,再用相应的解密算法(或私钥)进行解密以便恢复原机密信息。
本文只对简单的LSB算法的实现,并没有对算法进行优化,因此鲁棒性比较差,有待更进一步提高。
现阶段,信息隐藏技术虽然没有信息加密技术那样形成一个比较完善的理论体系,但随着网络技术和通信技术的发展,相信在不久的将来,信息隐藏技术一定会取得更广阔的发展空间。
5.参考文献
1)[美]CharlesPetzold著《Windows程序设计》,第五版上、下、册,,北京博彦科技发展有限公司译,北京大学出版社
2)谭浩强《C程序设计》第二版,著,清华大学出版社
6.参考网文
1)
2)
3)