一种基于压缩编码的高嵌入率数据隐写装置及隐写方法与流程

文档序号:13534472阅读:322来源:国知局
一种基于压缩编码的高嵌入率数据隐写装置及隐写方法与流程

本发明涉及一种基于压缩编码的高嵌入率装置数据隐写及隐写方法,尤其涉及一种基于deflate压缩编码的高嵌入率的数据隐写装置及隐写方法,属于数据安全技术领域。



背景技术:

数据压缩是在不丢失有用信息的条件下,以较短的数据编码来代替原数据,从而减少数据存储空间的一种技术。在当前的信息数据量指数级增长的网络大环境下,减少数据存储空间对降低数据管理难度,减少数据传输代价等等具有必不可少的作用。

数据压缩算法可分为无损数据压缩与有损数据压缩,无损压缩利用数据的统计冗余进行压缩,不存在信息损失,数据经过压缩之后能够从压缩数据当中准确的恢复出原数据,这使得无损压缩的正确率要高得多,这种压缩方法通常使用于文本压缩当中。而有损压缩则会造成数据信息的一些丢失,这种压缩使得压缩后数据的大小显著小于使用无损压缩,因此,倘若一定程度的信息丢失是可以接受的,则有损压缩是一种十分高效的压缩方法。有损压缩常常用于语音以及视频压缩当中。

lempel-ziv压缩方法是由abrahamlempeljacobziv于1977-1978年提出的一类十分经典的无损数据压缩方法,其中的核心算法是lz77和lz78算法。在这两种算法的基础之上后来又派生出了许多其他算法并被普遍使用于各种压缩软件当中。

lz77算法的压缩原理是在滑动窗口中搜索得到若干匹配字符串,分别计算其最大匹配长度,再将其中最长匹配字符串所对应的[长度,偏移量,下一个字符]对输出,以此来进行数据压缩。由于在搜索过程中字典为动态字典,其内容不断发生变化并且匹配过程产生的最长匹配字符串数量一般来讲呈现一定随机分布,这就为本发明数据嵌入创造了条件。deflate算法是基于lz77算法的改进算法,将匹配字符串的输出对减少为[长度,偏移量],从而提高了压缩算法效率。并且由于deflate算法中采用huffman编码,使得对手想直接利用最长匹配检测算法增加了复杂度。

在已有的lz77算法的编码过程中,由于当前编码位置开始的与滑动窗口内数据相匹配的最长匹配字符串往往有复数个,而算法默认的总是选取固定的某一最长匹配字符串进行编码。基于编码过程中最长匹配字符串的冗余,目前流行的基于lz77算法的压缩文件数据嵌入方法其原理是根据待嵌入数据对重复最长匹配字符串来进行选择,以此来实现数据隐写。

数据嵌入是一种信息隐藏技术,所谓信息隐藏技术是指将秘密信息嵌入到数字化载体当中,其目标不仅仅是通过与密码学结合来对秘密信息进行加密,更重要的是让隐藏的密码信息及其载体不会引起非法者的注意,也就减少了含秘数字载体被攻击的风险。正是基于数据压缩与信息隐藏的相关知识基础,才诞生了压缩文件数据嵌入方法。在《internationalconferenceoncomputermodeling&simulation》2010年第1卷第1期,题目为:“high-capacityreversibledata-hidingforlzwcodes”文章中,根据当前待编码字符串长度确定可嵌入隐藏数据位数,设计了基于lzw压缩编码的高嵌入率数据隐藏系统,一定程度上解决了已有压缩编码数据隐写嵌入率较低的难题。然而,该数据隐藏系统在根据当前待编码字符串长度确定可嵌入隐藏数据位数时,仅采用了该领域最常见的计算方法:假设当前待编码字符串长度为n(n>1),则可嵌入数据的位数为[log2n]位(其中[.]表示向下取整运算)。然而由于这类数据嵌入方法在嵌入过程当中不能充分利用冗余来进行嵌入,导致多于2n-1的重复字符串信息被浪费,算法的嵌入效率受到了制约,直接导致了算法性能的下降;此外,文章中选取的lzw压缩编码由于其每次编码过程之间相互关联:只有当前一次编码完成,后一次编码内容才能被唯一确定下来。这种特性为充分利用冗余进行嵌入带来困难。

混合进制与一般进制(例如十进制、二进制、十六进制等)不同之处在于,混合进制每一位代表的权值有别于一般进制:例如十进制自个位开始表示权值分别为100,101,102,103......等,比如(4213)10=4×103+2×102+1×101+3×100,而混合进制:例如(.)4567进制自最低位开始表示权值分别为70,60×7,50×6×7,40×5×6×7,......等,(.)4567进制数(4213)4567转化为十进制数的计算方式为:

(4213)4567=4×40×5×6×7+2×50×6×7+1×60×7+3×70=934,混合进制作为一种效率编码方式而成为数据编码领域的研究对象之一。

上述已有的高嵌入率数据隐写技术虽然具有嵌入率提升的效果,然而,在试图充分利用压缩编码中的冗余信息时,已有的高嵌入率数据隐写性能的改进还存在很大空间。本发明的目的是致力于解决上述基于压缩编码的数据隐写方法不能充分利用冗余信息来进行嵌入的技术缺陷,提出基于压缩编码的高嵌入率数据隐写系统及隐写方法。



技术实现要素:

本发明的目的是针对现有的基于压缩编码的数据隐写方法为使隐藏信息不被预期接收者之外任何人知晓,不能充分利用冗余信息来进行嵌入的技术缺陷,提出一种基于压缩编码的高嵌入率数据隐写装置及隐写方法。

由于在数据压缩过程中,原有的lz77压缩算法数据嵌入算法总是用统一的二进制来表达待嵌入数据;在执行嵌入数据过程中,只有能用来表达二进制数(2n)的最长匹配字符串才不会被舍弃,这潜在导致了大量的信息冗余被舍弃;想要实现更高效的数据嵌入必须要满足对所有冗余信息的充分使用,本发明拟采用混合进制,对复数个最长匹配字符串进行协同嵌入,以此来实现更高的数据嵌入率;

一种基于压缩编码的高嵌入率数据隐写装置及隐写方法,包括一种基于压缩编码的高嵌入率数据隐写装置(简称本装置)及一种基于压缩编码的高嵌入率数据隐写方法(简称本方法);

其中,一种基于压缩编码的高嵌入率数据隐写装置,包括隐藏数据嵌入模块及隐藏数据还原模块;隐藏数据嵌入模块又包括嵌入数据获取单元、待压缩文件数据获取单元、链表处理单元、最长匹配长度计算单元、最长匹配长度存储单元、数据嵌入单元以及最长匹配长度输出单元;

隐藏数据还原模块包括解压缩数据获取单元、最长匹配长度获取单元、嵌入数据还原单元、嵌入数据输出单元;

隐藏数据还原模块与隐藏数据嵌入模块的关系为:隐藏数据还原模块能且仅能准确无误还原依照隐藏数据嵌入模块进行嵌入的隐藏数据;

隐藏数据嵌入模块的连接关系如下:

待压缩文件数据获取单元与链表处理单元相连,链表处理单元和最长匹配长度计算单元相连,最长匹配长度计算单元与最长匹配长度存储单元相连;嵌入数据获取单元和最长匹配长度存储单元均与数据嵌入单元相连;数据嵌入单元与最长匹配长度输出单元相连;

隐藏数据还原模块的连接关系如下:

解压缩数据获取单元与最长匹配长度获取单元相连,最长匹配长度获取单元与嵌入数据还原单元相连,嵌入数据还原单元与嵌入数据输出单元相连;

隐藏数据嵌入模块的各单元功能如下:

所述嵌入数据获取单元用于获取并处理当前待嵌入数据供数据嵌入时使用,实现待嵌入数据获取及处理功能;

所述待压缩文件数据获取单元用于获取待压缩文件数据供数据压缩以及数据嵌入时使用,实现压缩文件数据的获取功能;

所述链表处理单元用于对待压缩文件数据获取单元得到的待压缩数据生成当前待压缩位置的匹配地址链表并遍历链表将匹配地址传给最长匹配长度计算单元,实现链表生成及数据预处理的功能;

所述最长匹配长度计算单元用于对从所述链表处理单元获得的链表地址进行与当前压缩位置的最长匹配字符串长度计算,并将所有最长匹配字符串偏移量及重复次数传给根据所述与最长匹配长度存储单元实现编码匹配计算过程;

所述最长匹配长度存储单元用于存储一定数量的最长匹配字符串相关信息,存储数量达到一定之后输出并清空所有存储内容,将之传给数据嵌入单元,实现存储编码信息功能;

所述数据嵌入单元根据嵌入数据获取单元得到的待嵌入数据同时嵌入至数个匹配最长匹配长度字符串中,并输出所有含有嵌入数据的压缩编码,实现数据嵌入与压缩编码输出功能;

所述最长匹配长度输出单元用于将从数据嵌入单元获得的压缩编码进行huffman编码并以此来打包生成最终的压缩文件,实现压缩编码的加工功能以及压缩文件生成功能;

隐藏数据还原模块的各单元功能如下:

所述解压缩数据获取单元用于获取当前待解压数据供所述最长匹配长度获取单元使用,实现压缩数据获取功能;

所述最长匹配长度获取单元用于提取已获得的待解压数据中的[最大匹配长度,偏移量]对,获取其中符合最大匹配长度小于最佳匹配长度值的最大匹配长度字符串供所述嵌入数据还原单元使用,实现压缩数据预处理功能;

所述嵌入数据还原单元用于对获取的最大匹配长度字符串进行固定数量的分组,每组字符串数与所述效率提高的压缩文件数据嵌入装置中最长匹配长度存储单元所规定之存储字符串条目数量相匹配。然后对每组字符串对嵌入数据进行还原,以供所述嵌入数据输出单元使用,实现压缩数据解码及嵌入数据还原功能;

所述嵌入数据输出单元用于将获得的嵌入数据二进制比特序列还原成嵌入数据并输出到预定位置,实现嵌入数据输出功能;

所述预定位置为电子文件、显示终端或打印终端;

一种基于压缩编码的高嵌入率数据隐写方法包括一种基于压缩编码的高嵌入率隐藏数据嵌入方法(简称嵌入方法)以及一种基于压缩编码的高嵌入率隐藏数据还原方法,(简称还原方法);

其中,嵌入方法,包括以下步骤:

步骤a.嵌入数据获取单元将待嵌入数据转化成二进制序列;

步骤b.待压缩文件数据获取单元调用deflate压缩算法获取压缩数据,并根据压缩指令获得压缩等级,并根据压缩等级获得对应的最佳匹配长度信息;

步骤c.链表处理单元找出滑动窗口中具有与当前待编码的若干字符相同哈希值的地址并构建链表;

步骤d.最长匹配长度计算单元计算最大匹配长度,以及最长匹配长度存储单元记录匹配长度相关信息,具体为:

步骤d.1最长匹配长度计算单元调用最长匹配函数,依次对链表内存储的地址计算出各匹配长度;

其中,最长匹配函数的返回值为最长匹配字符串的长度,对于链表内存放的每个地址,最长匹配长度计算单元都会计算出一个匹配长度;

步骤d.2最长匹配长度存储单元记录下出现计算出的匹配长度等于最长匹配字符串长度的次数;

步骤e.最长匹配长度计算单元遍历链表后,根据最长匹配长度与初始值大小关系决定待嵌入数据指针是否向后移动,具体为:

e.1若最长匹配长度与初始值大于等于最佳匹配长度,说明数据嵌入失败,待嵌入数据指针不向后移动,跳至步骤f;

e.2若最长匹配长度小于初始值,待嵌入数据指针向后移动,跳至步骤f;

步骤f.最长匹配长度计算单元调用最长匹配函数返回各最大匹配长度,判断最大匹配长度与初始值是否相等,并决定跳转至步骤h还是步骤g,具体为:

f.1若最大匹配长度与初始值相等,则输出当前待压缩位置的单字节内容,跳至步骤h;

f.2最大匹配长度与初始值不相等,则记录下最大匹配长度链表,跳至步骤g;

步骤g.滑动窗口向后移动最大匹配长度距离,最长匹配长度存储单元根据匹配长度链表内信息存储最长匹配长度字符串的最大匹配长度以及重复次数,判断压缩编码指针是否已经指向文件末尾,并决定执行步骤g.3或步骤g.4,具体为:

g.1若压缩编码指针已指向文件末尾,则跳至步骤g.4;

g.2若压缩编码指针未指向文件末尾,则执行步骤g.3;

步骤g.3重复步骤b到步骤f若干次以获得固定数目的最长匹配,跳至步骤g.4;

其中,所述的固定数目可为2到最大匹配长度总个数中任意值,由于所述方法嵌入率随着固定数目的增加而上升,可视对嵌入率的需求而定;所述的若干次大于等于固定数目;

如需求较高的嵌入率,应选取较大的固定数目,否则可选取较小的固定数目以获得较高的时间效率;

步骤g.4数据嵌入单元将步骤g.3中记录得到的最长匹配字符串的重复次数相乘,计算出最多能够嵌入几位隐藏数据;

其中,计算出最多能够嵌入几位隐藏数据的具体方法为:

设某次压缩编码数据嵌入过程中存储的最长匹配字符串的重复次数分别为l1,l2,...,lm,则计算出利用混合进制所能最多表达的二进制位数为:n=[log(l1l2...lm)];

步骤g.5数据嵌入单元将嵌入数据与各最长匹配字符串的重复次数相除,所得余数可求得应取最长匹配字符串位于所有重复最长匹配字符串当中的次序,再求出各应取最长匹配字符串与各编码位置的偏移量;

其中,根据所得余数可求得应取最长匹配字符串位于所有重复最长匹配字符串当中的次序可以将余数作为次序,也可以为与余数存在逆序、随机交织、线性以及非线性为主的一一映射关系;

步骤h.数据嵌入单元调用deflate压缩编码算法输出单字节或[最大匹配长度,偏移量]对,滑动窗口向后移动最大匹配长度距离;

其中,所述的压缩编码算法可以为deflate压缩编码,也可为lz77算法或lz77算法的衍生系列算法;

步骤i.最长匹配长度输出单元对步骤h中获得的单字节或[最大匹配长度,偏移量]对进行huffman编码;

步骤j重复步骤b至步骤h,直到deflate压缩编码进行到待编码文件末尾,此时即可生成含有待嵌入数据的压缩文件;

至此,从步骤a到步骤j,完成了嵌入方法;

所述的还原方法,包括以下步骤:

步骤一、解压缩数据获取单元对压缩文件进行解压,调用deflate解压算法,获得压缩文件的压缩等级并根据压缩等级获得对应的最佳匹配长度值;

步骤二、最长匹配长度获取单元根据压缩数据huffman编码头的第二、三字节可以判断该解压数据为何种形式,之后根据huffman编码表将huffman编码转换为对应的待解压对象;

若当前待解压对象为[最大匹配长度,偏移量]对,则遍历滑动窗口确定重复最长匹配字符串数量以及偏移量位置所指最长匹配字符串的相对位置;

步骤三、嵌入数据还原单元重复步骤二直到获得固定数目的最长匹配字符串,根据各最长匹配字符串位置与重复次数还原出嵌入数据;

其中,所述的固定数目与嵌入方法中的固定数目相同;

步骤四、嵌入数据输出单元继续解压重复步骤二到步骤三,直到整个压缩文件解压完毕;

步骤五,将所有的嵌入数据还原并输出至预定位置;

至此,从步骤一到步骤五,完成了还原方法。

有益效果

本发明一种基于压缩编码的高嵌入率数据隐写装置及隐写方法,与现有的基于压缩编码的数据隐写方法相比,具有如下有益效果:

利用混合进制,对复数个最长匹配字符串进行协同嵌入,实现了嵌入字节的动态分配,以此可实现更高的数据嵌入率。

附图说明

图1为本发明一种基于压缩编码的高嵌入率数据隐写装置及隐写方法实施例1中zlib1.2.8源代码压缩包下载列表;

图2为本发明一种基于压缩编码的高嵌入率数据隐写装置及隐写方法中嵌入及还原方法的详细流程示意图;

图3为本发明一种基于压缩编码的高嵌入率数据隐写装置及隐写方法的压缩编码数据嵌入装置结构示意图;

图4为本发明一种基于压缩编码的高嵌入率数据隐写装置及隐写方法的压缩编码嵌入数据还原装置结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的一种效率提高的压缩文件数据嵌入方法进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

下面将按照发明内容所介绍的步骤,详细介绍各个步骤的具体实施方式。

实施例1

本实施例阐述了将本发明“一种基于压缩编码的高嵌入率数据隐写装置及隐写方法”应用于支持deflate算法的实际压缩库下的嵌入和还原操作。

使用支持deflate算法的zlib压缩库,其中包含压缩库和解压缩库,完成deflate算法在快速模式下的数据嵌入。zlib使用抽象化的deflate算法,是进行资料压缩的函式库,由jean-loupgailly与markadler所开发,初版0.9版在1995年5月1日发表。

本实施例应用于支持deflate算法的实际压缩库下的嵌入和还原操作,具体如下:

步骤i.获得zlib1.2.8源代码,具体为:

在zlibhomesite网站(http://www.zlib.net/)下载zlib1.2.8版本的源代码;本实施例使用windows764位操作系统,程序修改调试基于microsoftvisualstudio2010编译环境进行。因此,打开链接之后,找到下载页面,选择合适的版本,如图1所示,点击即可进行下载;

步骤ii.修改zlib1.2.8源代码中deflate压缩与解压缩算法模块并重新编译,具体包括:

ii.1解压缩zlib;

将下载的zlib源代码压缩包解压到某一目录下,本实例中zlib解压路径为“d:\zlib-1.2.8”;

ii.2配置zlib编译环境,即安装编译环境,具体为:

ii.21安装c++编译环境,本实例中编译调试环境为microsoftvisualstudio2010;

ii.22打开zlib文件目录下的deflate.c文件,修改源代码中压缩算法的最长匹配模块代码;

ii.23打开zlib文件目录下的inflate.c文件,修改源代码中解压模块代码;

ii.3修改代码完成后,重新编译zlib;

步骤iii.利用cmd命令行实现压缩文件数据嵌入以及还原,具体为:

步骤iii.1打开cmd.exe;

步骤iii.2将命令行路径指向“d:\zlib-1.2.8\debug”;

步骤iii.3cmd命令行下输入压缩命令“gzlib-fobama.txt”实现对指定文件的压缩以及数据嵌入,其中“gzlib-f”表示压缩命令,待压缩文件可以为当前路径下的任意文件,本实例中使用文本文件obama.txt,大小为13504字节作为压缩文件测试对象;

作为优选,待嵌入数据亦可以作为参数传给压缩算法,实现对指定文件数据的嵌入;

步骤iii.4cmd命令行下输入解压命令“gzlib.exe-dobama.txt.gz1>d:\a.txt”对指定压缩文件进行解压,同时实现嵌入数据的提取还原,还原出来的嵌入数据被写入d:\a.txt中,该解压命令可在zlib源代码minigzip.c文件中找到详细说明;

步骤iii.5将还原出来的二进制比特序列还原为嵌入数据文件时,每8位转换为1字节数据,当还原数据遇到文件结尾标志则停止还原,即可获得原嵌入数据。

实施例2

本实施例具体阐述本发明所提出的一种基于压缩编码的高嵌入率数据隐写方法的具体实施过程。

算法步骤如下:

如图2所示为本发明实施例所述嵌入方法详细流程图,从图中可以看出,本方法包含如下步骤:

步骤1)获取待嵌入数据;

具体到本实施例,通过编写完成的程序将待嵌入数据由ascii码形式转化为二进制序列形式,而后等待数据嵌入流程开始;

步骤2)获取待压缩文件数据;

具体到本实施例,选取待压缩文件,等待压缩编码流程开始;

步骤3)调用压缩编码算法;

具体到本实施例,在命令行输入压缩命令以调用压缩编码算法,由算法确定当前待编码位置,开始从待编码位置进行编码压缩;

步骤4)最长字符串匹配;

具体到本实施例,对当前待编码部位进行最长字符串匹配,遍历滑动窗口并将所有得到的匹配字符串存入链表;

步骤5)哈希匹配链表生成;

具体到本实施例,对字符链表存储内容计算哈希值,生成哈希匹配链表;

步骤6)遍历链表进行最大匹配;

具体到本实施例,遍历链表对各结点存放地址进行最大匹配运算;

步骤7)滑动窗口遍历;

具体到本实施例,在获得的最大匹配长度字符串的基础上对整个滑动窗口进行遍历,以收集各最长匹配字符串偏移量等相关信息;

步骤8)判断最大匹配长度字符串是否有效,并跳至相应步骤:

8.1若是,跳转至步骤9);

8.2若否,跳转至步骤16);

具体到本实施例,最大匹配长度字符串是否有效是指最大匹配长度字符串是否大于deflate.c文件中默认的nice_match变量值(默认为2)

步骤9)最大匹配长度字符串信息存储:

具体到本实施例,将获得的最大匹配长度字符串重复次数以及各字符串偏移量存储到存储容量为3的二元数组中;

步骤10)判断重复次数是否大于1,并跳至相应步骤:

10.1若是,跳转至步骤11);

10.2若否,跳转至步骤16);

步骤11)判断字符串存储数量是否不小于于存储容量,并跳至相应步骤:

11.1若是,跳转至步骤12);

11.2若否,跳转至步骤18);

具体到本实施例,此处描述的存储容量即为步骤9所述二元数组的存储容量;

步骤12)嵌入长度计算;

具体到本实施例,令所有存储的最长匹配字符串的重复次数相乘,设某次压缩编码数据嵌入过程中存储的最长匹配字符串的重复次数分别为l1,l2,l3,则计算出利用混合进制所能最多表达的二进制位数为:n=[log(l1l2l3)];

步骤13)嵌入信息调制;

具体到本实施例,取待嵌入数据依次除以各字符串重复次数并记录各次余数;

步骤14)编码对输出;

具体到本实施例,根据余数确定对应各最长匹配字符串应选取偏移量并输出所有[长度,偏移量]对;

步骤15)清空存储数据;

具体到本实施例,清空已存储字符串数据,为下一轮数据嵌入做准备;

步骤16)压缩位置后移;

具体到本实施例,当前压缩位置后移对应长度,开始下一轮编码流程;

步骤17)判断压缩编码指针是否到达文件末尾,并进行相应操作:

17.1若是,跳至步骤19);

17.2若否,跳至步骤18);

步骤18)嵌入位置后移:

具体到本实施例,当前待嵌入位置后移对应长度,为下一轮数据嵌入过程做准备;

步骤19)算法结束并按原流程后续编码输出对应压缩文件;

具体到本实施例,对完成数据嵌入的压缩编码数据进行huffman编码,生成标准格式的压缩文件;

如图3所示为本发明实施例所述嵌入方法详细流程图,从图中可以看出,本方法包含如下步骤:所述的还原方法,包括以下步骤:

步骤①解压缩数据获取;

具体到本实施例,对指定的压缩文件进行解压,在命令行输入解压命令。调用deflate解压文件inflate.c,获得压缩文件的压缩等级并根据压缩等级获得对应的最佳匹配长度值,该值存放在nice_match变量中;

步骤②最长匹配长度获取;

具体到本实施例,根据压缩数据huffman编码头的第二、三字节可以判断该解压数据为何种形式,之后根据huffman编码表将huffman编码转换为对应的待解压对象;

所述判断解压数据为何种形式方法由原deflate压缩编码算法完成,本发明未做修改;

对还原得到的[最大匹配长度,偏移量]对,匹配指针遍历滑动窗口确定重复最长匹配字符串数量以及偏移量位置所指最长匹配字符串的相对位置;

步骤③嵌入数据还原;

具体到本实施例,重复步骤②直到获得一组(3个)最长匹配字符串,根据各最长匹配字符串位置与重复次数利用混合进制计算规则还原出嵌入数据,该过程与所述嵌入方法中数据嵌入方法互为逆过程;

步骤④嵌入数据输出;

具体到本实施例,继续解压重复步骤二到步骤三,直到整个压缩文件解压完毕,解压完毕检测方法为判断当前待解压数据头字节是否为1,具体为:

④.1若是,则解压到达文件末尾;

④.2若否,则解压未到达文件末尾;

步骤⑤所有的嵌入数据还原并输出至预定位置;

具体到本实施例,将获得的二进制形式嵌入数据每八位组合转化为ascii码形式,并输出至指定文件路径;

本发明方法利用混合进制通过动态控制每一deflate压缩算法的最长匹配长度字符串嵌入位数而不是统一的[log2n]位,由此实现冗余信息的更高效利用,因此这种数据嵌入方法能够实现效率提高功能。

本领域的技术人员从上面描述的内容可以了解,本发明方法各步骤间没有严格的先后关系,只要一个步骤的实现不需要依赖另一个步骤的完成,就可根据实际情况调整顺序,如步骤a、b和步骤c。

实施例3

本实施例具体阐述本发明所提出的一种基于压缩编码的高嵌入率数据隐写装置。

如图4所示为嵌入率提高的基于压缩编码的隐藏数据嵌入装置图,包括嵌入数据获取单元、待压缩文件数据获取单元、链表处理单元、最长匹配长度计算单元、所述最长匹配长度存储单元、最长匹配长度输出单元;待压缩文件数据获取单元与链表处理单元相连,链表处理单元和最长匹配长度计算单元相连,最长匹配长度计算单元与最长匹配长度存储单元相连;嵌入数据获取单元和最长匹配长度存储单元均与数据嵌入单元相连;数据嵌入单元与最长匹配长度输出单元相连;

嵌入数据获取单元:获取嵌入数据,并将嵌入数据转换为二进制比特序列存放于数组当中,由所述嵌入方法详细流程步骤1实现;

待压缩文件数据获取单元:获取当前待压缩文件数据,由所述抗最长匹配检测的压缩文件数据嵌入方法详细流程步骤2实现;

链表处理单元:生成当前待压缩位置的匹配地址链表,由所述嵌入方法详细流程步骤5实现;

最长匹配长度计算单元:对所述链表地址进行与当前压缩位置的最长匹配字符串长度计算,并根据所述嵌入数据获取单元得到的待嵌入数据控制整个链表最长匹配长度产生过程;同时该单元还包括相应的压缩算法附属环节例如压缩位置移动与文件末尾判断等;由所述嵌入方法详细流程步骤3、4、6、7、8、16、17实现;

最长匹配长度存储单元:通过建立数组来对最大匹配字符串的相关信息存储,为数据嵌入单元提供嵌入依据;由所述嵌入方法详细流程步骤9、10、11实现;

数据嵌入单元:所有字符串长度相乘,求出所能表达对应二进制位数;取相应待嵌入数据依次除以各字符串长度并记录各次余数;根据余数确定对应各最长匹配字符串应选取偏移量并输出所有[长度,偏移量]对并清空已存储字符串数据,为下一轮数据嵌入做准备;由所述抗嵌入方法详细流程步骤12、13、14、15、18实现;

最长匹配长度输出单元:将最长匹配长度计算单元产生的最长匹配长度字符串的相关信息输出,以供文件压缩的进行。由所述嵌入方法详细流程步骤19实现;

嵌入率提高的基于压缩编码的隐藏数据还原装置中包括依次连接的解压缩数据获取单元、最长匹配长度获取单元、嵌入数据还原单元、嵌入数据输出单元;解压缩数据获取单元:获取当前待解压数据;

最长匹配长度获取单元:获取最大匹配长度小于最佳匹配长度值的最大匹配长度并将其输出至指定位置;

嵌入数据还原单元:遍历最长匹配长度获取单元输出的最大匹配长度、偏移量以及重复次数,利用偏移量确定该字符串在所有最大匹配字符串中相对位置并利用混合进制运算还原出嵌入数据,供嵌入数据输出单元使用;

嵌入数据输出单元:将获得的嵌入数据二进制比特序列按8位一组还原成对应的字节并输出到预定位置,此过程与嵌入数据转换为二进制比特序列互为逆过程,可参照嵌入数据转换为二进制比特序列过程实现。若转换过程遇到文件结尾标志时停止转换,至此可获得原嵌入数据文件。

实施例4

本实施例具体阐述了本发明所提出的一种基于压缩编码的高嵌入率数据隐写方法的嵌入率提高的原因。

本发明所提的基于压缩编码的数据隐写方法相比于本领域现有的数据隐写方法,其嵌入率提高的原因在于:

随机选取某压缩文件deflate编码过程当中产生的连续n组(n为任意大于1的正整数)最长匹配字符串,其重复次数分别为l1,l2,...,ln-1,ln(易知:li(1≤i≤n)相互独立且随机分布)。

该领域一般数据隐写方法数据嵌入量:

q0=[log2l1]+[log2l2]+...+[log2ln-1]+[log2n]

所述效率提高的基于压缩编码的数据隐写方法数据嵌入量:

q1=[log2l1+log2l2+...+log2ln-1+log2n]

不难得证:q1≥q0,等号成立当且仅当:

δ=(log2l1-[log2l1])+(log2l2-[log2l2])+...+(log2ln-1-[log2ln-1])+(log2n-[log2n])<1

由于li(1≤i≤n)相互独立且随机分布,p(δ<1)随着n的增加而趋近于零。

设qδ=q1-q0,则

故对固定数量(大于1)的最长匹配字符串,所述效率提高的基于压缩编码的数据隐写方法数据嵌入量不小于该领域一般数据隐写方法,且最大提升嵌入量为(固定数量-1)。由此可见,所述效率提高的基于压缩编码的数据隐写方法具有提高隐藏数据嵌入效率的功能。

以上所述的具体描述,对发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1