一种可变长度结构化信息的编码和解码方法

文档序号:7509723阅读:174来源:国知局
专利名称:一种可变长度结构化信息的编码和解码方法
技术领域
本发明属于信息编码技术领域,具体涉及一种可变长度结构化信息的编码和解码方法。
背景技术
信息隐藏技术是研究如何将某一信息隐藏于另一公开的信息中,然后通过公开的传输来传递隐藏的信息。由于含有隐藏信息的媒体发布是公开的,而可能的检测者难以从公开信息中判断隐藏信息是否存在,更加难以截获隐藏信息,从而达到保证信息的安全的目的。如数字水印技术,它作为一种有效的数字产品版权的保护和数据安全维护技术,是信息隐藏技术研究领域的一个分支。数字水印技术是将具有特定意义的标记(水印),利用数字嵌入的方法隐藏在数字图像、声音、文档、图书、视频等数字产品中,用以证明创作者对其作品的所有权,同时通过对水印的检测和分析来保证数字信息的完整性和可靠性,从而成为知识产权保护和数字多媒体防伪的有效手段。在数字水印技术中,嵌入的标记即水印,代表一定意义的内容,它可以是文本、声音、图像或者视频等信号,但是无论是何种类型,在进行水印的嵌入时,多数的算法都要求将它首先转化为二值(0和1或-1和1)的序列,也就是说水印信息是一个代表一定意义的字节流或字节串,检测后便可以很快地读取所隐藏的内容信息。当然为了防止攻击者从载体中获得水印数据后直接了解水印信息的内容,可以使用一定的手段将水印信息变成一个看似杂乱无章的二值序列,比如通过加密或图像的置乱算法,检测出的数据字节流只要经过解密或者图像的置乱算法的逆运算操作后,检测者便同样可以完全解析出字节流信息所代表的确切含义。
但是在实际应用中,很多时候往往需要嵌入的不仅仅是简单的字节流信息,还需要嵌入结构性信息数据,只有通过一定方法分解出多种字段信息,才能获取其代表的含义。如在安全文档打印技术中,可以通过文档底部附加的背景底纹来嵌入水印信息,在文档打印的过程中,可以在背景底纹中埋入打印者的名字、打印机的名字、打印时间、计算机的物理地址等信息,并将背景底纹数据跟正常的文档数据予以同时打印。必要时可以通过扫描文档获得图像数据,进行检测后得到字节信息流,此时表现出的信息不具有完整的意义,需要额外的字段分解工作才能获得各个字段信息。虽然读取的是各个独立字段的信息,但是嵌入前却需要事先将各个字段信息组合成一个完整的字节流。任何信息隐藏技术预处理的对象都是一个完整的信号序列,该信号序列应该做到在尽可能小的长度范围内隐藏尽可能多的信息。目前的技术不能很好地解决这个问题,其主要的缺陷在没有合理的编码方法,为了尽可能多地编码信息,不存储结构体中的各字段名称,所以只能编码特定的结构性信息,比如编码上述用于描述安全文档打印的结构化数据;结构化信息中的每个子字段内容固定分配一定的最大长度,即使该字段的内容不够或者为空时,仍就分配了定长的存储空间,从而造成了编码空间的浪费;由于结构化信息的各子字段内容和长度固定,无法动态实现扩展;由于编码方式的限制,只有事先知道结构体的构成以及各子字段的长度限制才能正确解码出编码信息。

发明内容
针对现有技术中存在的缺陷,本发明的目的是针对现有技术的缺陷,提出一种可变长度结构化信息的编码和解码方法。该方法能够实现信号序列应该做到在尽可能小的长度范围内隐藏尽可能多的信息,并且结构化信息的各子字段内容和长度能够动态扩展,不需要事先知道结构体也能够正确地读取和分解字段。
为达到以上目的,本发明采用的技术方案是一种可变长度结构化信息的编码和解码方法,包括以下步骤(1)获取和处理结构化信息得到一个完整的信号序列,所述的结构化信息是指包含多个独立子字段名称和内容的信息的集合;(2)将记录冗余信息的字节流与步骤(1)得到的信号序列结合;(3)将步骤(2)中结合后的信号序列进行加密和数据校验处理,得到最终的编码信号序列。
进一步,为使本发明获得更好的发明效果,步骤(1)中获取要进行编码处理的结构化信息,分解出各字段名字和各字段的内容,并取出它们的数据代码组合成一个子串字节流,然后将各子串字节流合并成一个信号序列;再进一步,为使本发明获得更好的发明效果,步骤(1)中分解出各字段名字和各字段的内容时,把字段内容纯为数字的项直接转化为二进制方式(0或1)表示,然后与代表相应字段名字的字节流合并,并标识该字段的内容为数字形式;
进一步,为使本发明获得更好的发明效果,步骤(1)中,在分析各字段名字和各字段内容时,通过相应的代码页把Unicode编码的双字节字符转为单字节的字符串。
进一步,为使本发明获得更好的发明效果,步骤(2)中,用冗余字节流记录以下各项标识信息代码页、总字段个数、各字段名称的长度、字段内容的长度、是否为数字信息,并将该冗余字节流插入到信号序列的前面得到一个新的序列;进一步,为使本发明获得更好的发明效果,步骤(3)中,使用密钥将步骤(2)中得到的新序列进行加密处理,并使用通用的数据校验算法对得到的密文字节流串进行数据校验,最后将得到的校验数据插入到密文串的最前面得到最终编码后的信号序列。所述的通用的数据校验算法是循环冗余校验码算法。
与上述编码方法相对应的,一种可变长度结构化信息的解码方法,包括以下步骤a.解码时首先获取编码信号序列;b.在信号序列的首部取出校验数据进行数据正确性校验,校验通过后执行步骤c,否则执行步骤e;c.使用相同的密钥对校验后的信号序列进行解密处理,还原明文字节流信号序列;d.根据信号序列前面部分的冗余信息逐步进行字段分解和转换;e.退出解码过程,并显示解码后的信息。
进一步,为使本发明获得更好的发明效果,步骤b中使用循环冗余校验码算法对密文字节串进行正确性校验,数据校验过程结束后,将校验数据从信号序列中删除;如果步骤b中数据正确性校验不通过时,则在步骤e中直接显示空字符。
进一步,为使本发明获得更好的发明效果,步骤d中,根据冗余信息字节流计算出下列信息代码页、总字段个数、各字段名称的长度、字段内容的长度、是否为数字信息,并将这部分字节流从c得到的信号序列中删除。
再进一步,为使本发明获得更好的发明效果,根据各字段名称的长度和字段内容的长度依次从在步骤d中得到的信号序列中分解出各字段名称和字段内容,然后把非数字的字段名称和字段内容的字节流通过代码页转换为Unicode宽字符串。
再进一步,为使本发明获得更好的发明效果,将步骤d中分解出的数字形式的字段内容转化直接转化为数字进行显示。
本发明的效果在于本发明说的结构化信息的编码和解码方法支持各种字符集类型,各字段信息的格式多种多样,信号序列中的各字段信息排列方式比较合理,包含的信息量大;结构化信息的长度可变,不需要事先知道结构体便可以正确地读取和分解字段;信息的安全系数和正确识别率都有大幅度提高,并具备一定的抗干扰和检查纠错能力。本发明所述的方法允许混合编码多种信息,支持单字符集或多字符集,可广泛应用于通信、电子文档及打印文档等技术领域。


图1是存储代码页的字节示意图;图2是存储字段个数的字节示意图;图3是包含字段名称长度、字段内容长度和是否为数字的标识的字节示意图;图4是字段名称和字段内容合并存储的示意图;图5是带有冗余信息的信号序列示意图;图6是用密钥加密后的密文字节串示意图;图7是含有CRC-16校验码的信号序列示意图;图8是本发明所述的结构化信息的编码方法流程图;图9是本发明所述的结构化信息的解码方法流程图。
具体实施例方式
下面结合附图对本发明的具体实施方式
做进一步的描述如图1所示,十六个方格代表两个字节,用于标识当前结构体中字符串所属的代码页(Code Page),在明文编码信号序列中,它处于序列中最前面两个字节的位置。在很多时候接收的是Unicode编码或双字节输入,而对于单字节字符,比如ASCII码字符,同样是用两个字节存储。如果进行编码时也用两个字节标识的话,会造成很大的空间浪费。此时如果知道代码页,便可以把输入的双字节字符串转换为单字节字符串,从而节省了空间,并实现单位编码序列长度内藏入了更多的信息。进行解码时,也可以通过代码页将单字节字符串转换为Unicode编码序列,从而能正确的解码和显示。
如图2所示,一个字节用于标识结构体中子字段的个数,也就是说最多可以编码255个字段信息,可以满足一般结构体的信息编码,当然必要时可以扩展为两个或者更多字节大小。
如图3所示,同样代表了两个字节大小的空间,总共分为三段内容。最左边的一位代表是否为数字形式,其中“1”代表数字形式,“0”为非数字形式,因为数字信息可用更少的字节来表示。比如输入一个计算机的IP地址为“172.16.255.254”,如果用字符串来表示的话至少需要11个字符,但是在计算机内存中用四个unsigned char变量就可以表示它,所以在编码序列中它只占用四个字节的空间。中间的7位用来标识各字段名称的长度,此时字段名称的长度限制为127个字节。最后的两个字节标识每个字段内容的长度,共计65535个字,同样根据需要这两个长度都可以进行扩充。在进行编码时,标识所有字段的名称长度和字段内容长度的字节组合成为一个子串,排在标识所有字段个数的字节后面,该子串的长度为所有字段数的三倍。
如图4所示,标识的多个字节分为两部分,第一部分存储字段的名称,所用字节的个数已经保存在图3的中间部分;第二部分存储字段的内容,所用字节的个数已经保存在图3的右边部分。每个字段的名称和字段的内容首位相连组成一个子串,然后再跟其他字段的组成的子串顺序合并成一个长的子串,代表了编码信号序列中真正有意义的内容。在进行解码时,根据图3所示的字段名称的长度和字段内容的长度逐级进行分解,直至得到各个字段的名称和字段内容信息,然后再将得到各字结构组成一个完整的结构体。
如图5所示,标识了含有冗余信息的整个信号序列的结构组成,其中包括四个部分。第一部分存储了图1所示的代码页示意图,用于标识结构体中字符串所属的字符集,以便于字符的正确解码和显示,也可以节省存储空间;第二部分存储了结构体中字段的个数;第三部分为图3示意图所代表内容;最后一部分中的每一个子结构分别存储了各个字段名称和字段内容信息。
由图5可以看出,含有冗余信息的整个信号序列完全是一个明文字节串,如果任何解码者截获这段字节流便可以很快地读懂其中隐藏的内容信息,为了安全性的考虑,使用密钥对该明文字节串进行加密,从而得到如图6所示的密文字节串,密钥由特定的解码者保存,即使获取了这些字节串也不能正确地翻译出真实内容。
下面结合一个实施例进一步阐述整个的编码和解码过程,如图8所示,一种可变长度结构化信息的编码方法,包括如下步骤首先,对可变长度结构化信息进行编码的方法,包括以下步骤(1)获取和处理结构化信息得到一个完整的信号序列;在文档打印的过程中,有时需要附加打印额外信息,如用户名称、计算机的IP地址、打印时间和日期以及用户自定义信息。首先将这些信息组合成为一个结构体,其中包括每个子字段的名称和内容信息,具体描述如下a)用户名称SupermanQww;
b)计算机IP地址172.16.7.191;c)打印日期的年份2005;d)打印日期的月份11;e)打印日期的日期14;f)打印时间的小时12;g)打印时间的分钟30;h)打印时间的秒数15;i)用户自定义字符本文档必须通过password才能阅读。
在上述的结构体中,每个子结构的前半部分为字段名称,后半部分为字段的具体内容信息。结构体中所有字符采用的代码页为936(ANSI/OEM-Simplified Chinese(PRC,Singapore)),用于存储的两个字节如图1所示。通过代码页将上述结构中的所有字符全部转换为单字节流表示,尤其对于最后一个子结构中用户自定义的字符信息,转换后的字节流可以节省出8个字节的空间。
接下来计算结构体中的字段个数为9,用一个字节记录如图2所示,放在代码页字节的后面。在解码时,读取该字节得到字段的总个数后,接着顺序读取27个字节数据,其中每三个相邻字节所构成的子结构代表的信息如图3所示。在本实施例中,(2)~(8)子结构中的第一位均为“1”,(1)和(9)子结构的第一位均为“0”。作为例子,具体分析一下子结构(2)中三个字节的组成情况100011000000000000000100,其中第一位的“1”表示该字段的内容为数字形式,接下来的0001100代表字段的名称的长度为12,最后的16位代表字段内容的长度为4。由图3所示的子结构的个数为9,共占27个字节的空间。编码的真正实际内容是由一串子结构组成,其中每个子结构包括两部分,分别为顺序连接的字段名称和字段内容。同样在结构(2)中,字段名称为“计算机IP地址”,而字段的内容“172.16.7.191”可以用四个字节来表示,分别为10101100、00010000、00000111和10111111。由于前面字段内容长度的字节中标识了其长度为4,在读取该段字节流时,自动分解为四个数字,而不是按照字符的方式进行处理。将其他子结构类似处理后得到一个包含各子字段名称和内容的明文信号序列。
(2)将记录冗余信息的字节流与步骤(1)得到的信号序列结合;将图3所示的字节流追加到代码页字节和字段长度字节的后面组成冗余信息序列,然后与步骤(1)得到的信号序列结合后得到一个完整的明文信号序列,如图5所示。当然冗余信息字节流跟实际内容字节流的顺序可以交换。
(3)将步骤(2)中结合后的信号序列进行加密和数据校验处理,得到最终的编码信号序列;为了提高信息编码的安全系数,首先使用密钥对上述步骤(2)中得到的明文信号序列进行加密处理,该密钥由相关的解码者保存,并作为密码进行输入。解码者首先输入密码,然后用输入密码作为密钥进行解密,只有密码正确时才能获知信息序列的全部具体内容,从而保证信息在传播过程中具备很高的安全性。
然后使用通用的数据校验算法对加密处理后的密文字节流处理,计算校验数据。本实施例中,选择循环冗余校验(CRC)码计算得到16位的校验码,并将校验码信息插入到密文信息串的前面,得到最终的编码信号序列,如图7所示。其中的校验码部分主要是用来检测时进行数据正确性校验。
本实施例中,上述的结构化信息在文档打印过程中同时予以打印,隐藏信息的载体为纸介质的文档。而需要解码时,必须先通过扫描仪或其他图像获取设备将文档数字化,再通过数字图像处理方法识别出藏入的密文字节流。但是为了克服在打印和扫描过程中带来的各方面的攻击,并尽可能地减小信息恢复的误差,使用循环冗余校验码算法对密文字节串进行正确性校验,得到的校验码插入到密文信息序列的前面,负责验证所有信息的正确性,比如本实施例中选择CRC-16校验码,得到两个字节数据校验码,跟密文字节串一起合并为最终编码信号序列。
如图9所示,本发明所述的一种可变长度结构化信息的解码方法,包括以下步骤a.解码时首先获取编码信号序列;解码时必须将从图像中识别出来原始字节流作为输入,先取出序列中最前面的标识校验数据的字节,本实施例中,密文序列的前两个字节标识CRC-16校验数据。
b.在信号序列的首部取出校验数据进行数据正确性校验,校验通过后执行步骤c,否则执行步骤e;用提取出的校验数据进行数据正确性验证,如果校验不通过,则提示错误信息并显示空字符;数据校验过程通过后,将标识校验数据的字节从原始字节流中删除,从而得到一个新的字节串O1。
c.使用相同的密钥对校验后的信号序列进行解密处理,还原明文字节流信号序列;将用户正确输入的密码作为密钥解密文字节串O1,得到明文字节串O2。
d.根据信号序列前面部分的冗余信息逐步进行字段分解和转换;O2字节串包含预先定义的冗余信息,取出序列的前两个字节便可以计算出字符串所属的代码页,这里代码页为936。通过第三个字节计算出结构体中字段的总个数为9,接着顺序截取27个字节,依次平均为为9组,分别判断每个字段是否为数字形式,并且计算每个字段名称长度和字段内容的长度,从而根据这些信息在剩余的字节流中顺序提取出各字段的名称和字段的内容信息。最后根据字段内容的是否为数字形式的属性分别进行处理,对于子结构(1)和(9)分别利用代码页将单字节字符串转换为Unicode统一编码,进而正确显示输出;对于子结构(2)~(8),分别转换为数字形式进行输出。
本实施例中,结构体中的打印时间和打印日期的显示方式可以有多种,比如打印日期可以显示为“YYYY-MM-DD”、“DD-MM-YYYY”等。
e.退出解码过程,并显示解码后的信息。
本发明所述的编码和解码方法适用于任何信息隐藏算法,编码后的序列包含完整的数据结构信息,在不需要知道结构体信息的前提下,仍能正确的识别和读取;并且编码方式比较合理,利于结构体信息的任意扩展。当然进行编码传输和信息嵌入时,可以使用任何数据压缩方法对信号序列进一步处理,以期获得更短的编码长度。
上述步骤只是一个优选的实施方式。本领域技术人员不难得出其他的实施方法而不违背本发明的总体思想。
其中,标识各种冗余信息的字节长度、排列方式以及字段名称和字段内容的组合方式都可以发生变化。
其中,对于密文字节串可以使用不同的数据校验方法,还可以根据隐藏方法的不同添加数据校正的冗余信息,比如使用多余的奇偶校验位。
权利要求
1.一种可变长度结构化信息的编码方法,包括以下步骤(1)获取和处理结构化信息得到一个完整的信号序列,所述的结构化信息是指包含多个独立子字段名称和内容的信息的集合;(2)将记录冗余信息的字节流与步骤(1)得到的信号序列结合;(3)将步骤(2)中结合后的信号序列进行加密和数据校验处理,得到最终的编码信号序列。
2.如权利要求1所述的一种可变长度结构化信息的编码方法,其特征是步骤(1)中获取要进行编码处理的结构化信息,分解出各字段名字和各字段的内容,并取出它们的数据代码组合成一个子串字节流,然后将各子串字节流合并成一个信号序列。
3.如权利要求2所述的一种可变长度结构化信息的编码方法,其特征是步骤(1)中分解出各字段名字和各字段的内容时,把字段内容纯为数字的项直接转化为二进制方式表示,然后与代表相应字段名字的字节流合并,并标识该字段的内容为数字形式。
4.如权利要求1所述的一种可变长度结构化信息的编码方法,其特征是步骤(1)中,在分析各字段名字和各字段内容时,通过相应的代码页把Unicode编码的双字节字符转为单字节的字符串。
5.如权利要求1所述的一种可变长度结构化信息的编码方法,其特征是步骤(2)中,用冗余字节流记录以下各项标识信息代码页、总字段个数、各字段名称的长度、字段内容的长度、是否为数字信息,并将该冗余字节流插入到信号序列的前面得到一个新的序列。
6.如权利要求1、2、3、4或5所述的一种可变长度结构化信息的编码方法,其特征是步骤(3)中,使用密钥将步骤(2)中得到的新序列进行加密处理,并使用通用的数据校验算法对得到的密文字节流串进行数据校验,最后将得到的校验数据插入到密文串的最前面得到最终编码后的信号序列。
7.如权利要求6所述的一种可变长度结构化信息的编码方法,其特征是步骤(3)中,通用的数据校验算法是循环冗余校验码算法。
8.一种可变长度结构化信息的解码方法,包括以下步骤a.解码时首先获取编码信号序列;b.在信号序列的首部取出校验数据进行数据正确性校验,校验通过后执行步骤c,否则执行步骤e;c.使用相同的密钥对校验后的信号序列进行解密处理,还原明文字节流信号序列;d.根据信号序列前面部分的冗余信息逐步进行字段分解和转换;e.退出解码过程,并显示解码后的信息。
9.如权利要求8所述的一种可变长度结构化信息的解码方法,其特征是步骤b中使用循环冗余校验码算法对密文字节串进行正确性校验。
10.如权利要求9所述的一种可变长度结构化信息的解码方法,其特征是步骤b中数据校验过程结束后,将校验数据从信号序列中删除。
11.如权利要求10所述的一种可变长度结构化信息的解码方法,其特征是步骤b中数据正确性校验不通过时,在步骤e中直接显示空字符。
12.如权利要求8、9、10或11所述的一种可变长度结构化信息的编码和解码方法,其特征是步骤d中,根据冗余信息字节流计算出下列信息代码页、总字段个数、各字段名称的长度、字段内容的长度、是否为数字信息,并将这部分字节流从步骤c中得到的信号序列中删除。
13.如权利要求12所述的一种可变长度结构化信息的解码方法,其特征是根据各字段名称的长度和字段内容的长度依次从在步骤d中得到的信号序列中分解出各字段名称和字段内容,然后把非数字的字段名称和字段内容的字节流通过代码页转换为Unicode宽字符串。
14.如权利要求13所述的一种可变长度结构化信息的解码方法,其特征是将步骤d中分解出的数字形式的字段内容转化直接转化为数字进行显示。
全文摘要
本发明涉及一种可变长度结构化信息的编码和解码方法,属于信息编码技术领域。现有技术中,信息隐藏技术中嵌入结构性信息数据即信号序列时,无法做到在尽可能小的长度范围内隐藏尽可能多的信息。本发明所述的方法,所有的子字段信息构成一个结构化的信息,不同的字段编码代表不同的含义,组合成完整的信号序列;在信号序列的前面插入一定数量的冗余字节,使用特殊的密钥将信号序列进行加密后,再进行数据正确性检验,最后将校验码插入信息序列的密文串的前面得到最终的序列。采用本发明所述的方法,各字段信息的格式可以多样,信号序列中的各字段信息排列方式比较合理,包含的信息量大,信息的安全系数和正确识别率都有大幅度提高。
文档编号H03M7/30GK1777040SQ20051013432
公开日2006年5月24日 申请日期2005年12月14日 优先权日2005年12月14日
发明者亓文法, 程盛远, 杨斌, 史文哲 申请人:北京北大方正电子有限公司, 北京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1