发明内容
为了解决上述问题,本发明提供一种文本信息隐藏方法及装置,以实现一种实现简单的、安全性、隐藏性和鲁棒性高的文本信息隐藏方式。
为了实现以上目的,本发明提供的文本信息隐藏方法包括:步骤1、获取待隐藏的文本信息所使用的原字体文件;步骤2、通过修改原字体文件中的字形索引与字符编码之间的映射关系来生成新字体文件;步骤3、根据新字体文件修改所述文本信息,并将修改的文本信息写入电子文档中;和步骤4、在打开电子文档时,从新字体文件中获取所述文本信息中的字符的字形描述数据,并根据获取的字形描述数据显示所述文本信息。
优选地,所述步骤2包括:调整原字体文件中的字形描述数据的位置;和根据调整的位置修改原字体文件中的字形索引字符编码映射表中的字符编码对应的字形索引,从而生成新字体文件,以及所述步骤3包括:获取所述文本信息中的字符的字符编码;根据获取的字符编码从新字体文件中的字形索引字符编码映射表中找到对应的字形索引;和将找到的字形索引代替字符编码写入电子文档中,以及所述步骤4包括:根据所述文本信息中的字符的字形索引从新字体文件中获取字形描述数据。
优选地,按照预定规律调整或者随机调整原字体文件中的字形索引表中的字形描述数据的位置。
优选地,所述预定规律包括倒序。
优选地,所述步骤2包括:修改原字体文件中的字形索引字符编码映射表中的字形索引对应的字符编码,从而生成新字体文件,以及所述步骤3包括:从原字体文件中的字形索引字符编码映射表中获取所述文本信息中的字符的字符编码对应的字形索引;根据获取的字形索引从新字体文件中的字形索引字符编码映射表中找到对应的字符编码;和将找到的字符编码写入到电子文档中,以及所述步骤4包括:根据所述文本信息中的字符的字符编码从新字体文件中的字形索引字符编码映射表中获取对应的字形索引;和根据获取的字形索引从新字体文件中获取对应的字形描述数据。
优选地,所述方法还包括:新建字形描述数据,并按照字形索引将新建的字形描述数据代替原字体文件中的字形描述数据写入新字体文件中或者添加到新字体文件中。
相应地,本发明提供一种文本信息隐藏装置,包括:输入单元,其用于输入待隐藏的文本信息和该文本信息所使用的原字体文件;字体文件生成单元,其用于通过修改原字体文件中的字形索引与字符编码之间的映射关系来生成新字体文件;信息隐藏单元,其用于根据新字体文件修改所述文本信息,并将修改的文本信息写入电子文档中;字形数据获取单元,其用于在打开电子文档时从新字体文件中获取所述文本信息中的字符的字形描述数据;和显示单元,其用于根据获取的字形描述数据显示所述文本信息。
优选地,所述字体生成单元执行以下步骤:调整原字体文件中的字形描述数据的位置;和根据调整的位置修改原字体文件中的字形索引字符编码映射表中的字符编码对应的字形索引,从而生成新字体文件,以及所述信息隐藏单元执行以下步骤:获取所述文本信息中的字符的字符编码;根据获取的字符编码从新字体文件中的字形索引字符编码映射表中找到对应的字形索引;和将找到的字形索引代替字符编码写入电子文档中,以及所述字形数据获取单元执行以下步骤:根据所述文本信息中的字符的字形索引从新字体文件中获取字形描述数据。
优选地,所述字体生成单元按照预定规律调整或者随机调整原字体文件中的字形索引表中的字形描述数据的位置。
优选地,所述字体生成单元执行以下步骤:修改原字体文件中的字形索引字符编码映射表中的字形索引对应的字符编码,从而生成新字体文件,以及所述信息隐藏单元执行以下步骤:从原字体文件中的字形索引字符编码映射表中获取所述文本信息中的字符的字符编码对应的字形索引;根据获取的字形索引从新字体文件中的字形索引字符编码映射表中找到对应的字符编码;和将找到的字符编码写入到电子文档中,以及所述字形数据获取单元执行以下步骤:根据所述文本信息中的字符的字符编码从新字体文件中的字形索引字符编码映射表中获取对应的字形索引;和根据获取的字形索引从新字体文件中获取对应的字形描述数据。
优选地,所述装置还包括:字形新建单元,其用于新建字形描述数据,并按照字形索引将新建的字形描述数据代替原字体文件中的字形描述数据写入新字体文件中或者添加到新字体文件中。
通过以上技术方案,无需对文本信息的字符编码进行改变且不需要使用任何加密方法,就可简单地实现文本信息隐藏的效果,而且安全性、隐藏性和鲁棒性都很高。
具体实施方式
以下,将参照附图和实施例对本发明进行描述。
电子文档在存储和展示的时候,包含图形、图片、表格、公式、多种语言字符等元素,而字符是最主要的表示文档内容的元素,在文档中占的比重也最大。字体文件作为一种资源,存储了一系列字符的字形的描述数据,在文档展示的时候,根据文档中的字符信息,对应字体数据中的字形描述数据渲染出图像或者一组路径显示到计算机屏幕或者输出到打印机上。具体地讲,字体文件包括字形描述数据和字形索引字符编码映射表,其中,字形索引表示字形描述数据在字体文件中的位置;字形索引字符编码映射表记录字形索引与字符编码之间的映射关系,字符编码表示代表一定语义的符号的编码,例如Unicode、GBK编码等。
本发明的技术构思在于基于待隐藏的文本信息所使用的字体文件来隐藏文本信息。概括地讲,首先,获取待隐藏的文本信息所使用的原字体文件,并通过修改原字体文件中的字形索引与字符编码之间的映射关系来生成新字体文件,然后,根据新字体文件修改所述文本信息,并将修改的文本信息写入电子文档中。在打开电子文档时,从新字体文件中获取所述文本信息中的字符的字形描述数据,并根据获取的字形描述数据显示所述文本信息。
(第一实施例)
本实施例的技术构思是通过改变字形描述数据在字体文件中的位置来改变字符编码对应的字形索引,从而改变字形索引与字符编码之间的映射关系。
图1是根据本发明的第一实施例的文本信息隐藏方法的流程图。
如图1所示,首先,在步骤S101中,获取待隐藏的文本信息所使用的原字体文件。
接着,基于原字体文件生成新字体文件。具体地讲,首先,在步骤S102中,调整原字体文件中的字形描述数据的位置,这里,调整方式可以是按照预定规律(例如,倒序)进行调整,也可以是随机调整。然后,在步骤S103中,根据调整的位置修改原字体文件中的字形索引字符编码映射表中的字符编码对应的字形索引,从而生成新字体文件。
接着,基于新字体文件将待隐藏的文本信息写入到电子文档中。具体地讲,首先,在步骤S104中,获取待隐藏的文本信息中的字符的字符编码,然后,在步骤S105中,根据获取的字符编码从新字体文件中的字形索引字符编码映射表中找到对应的字形索引,然后,在步骤S106中,将找到的字形索引代替字符编码写入电子文档中。
在打开隐藏了文本信息的电子文档时,在安装了新字体文件的情况下,在步骤S107中,根据文本信息中的字符的字形索引从新字体文件中获取字形描述数据,并在步骤S108中根据获取的字形描述数据显示隐藏的文本信息。这里,只有在安装了新字体文件的情况下,才能显示出文本信息的原始信息,否则将会显示出错误的信息。
以下将通过一个具体的示例来对本发明的第一实施例进行详细描述。
在该示例中,假设待隐藏的文本信息如下信息:
10月28日在无锡举行的中国国际物联网(传感网)大会传出消息,汽车移动物联网(车联网)项目将列为我国重大专项第三专项的重要项目。目前相关内容已上报国务院,一期拨款有望达百亿级别,预期2020年实现可控车辆规模达2亿。
首先,在步骤S101中,获取以上这些文字在电子文档中所使用的原字体文件,即,楷体,格式为TTF。
接着,在步骤S102中,对原字体文件中的字形描述数据的顺序进行重新调整。
例如,假设原楷体中字符“0”到“9”的顺序如下表1:
表1
13 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
从上可看出,字符“0”的字形描述数据在原字体文件中的位置是19,即,字符“0”在原字体文件中的字形索引为19;字符“1”的字形描述数据在原字体文件中的位置是20,即,字符“1”在原字体文件中的字形索引为20,依次类推。
按照倒序的规律将字符“0”到“9”的顺序打乱,打乱后的顺序如下表2:
表2
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
19 |
18 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
从上可看出,打乱后,字符“0”的字形描述数据在新字体文件中的位置是28,即,字符“0”在新字体文件中的字形索引变为28;字符“1”的字形描述数据在新字体文件中的位置是27,即,字符“1”在新字体文件中的字形索引变为27,依次类推。
接着,在步骤S103中,根据以上调整的位置修改原字体文件中的字形索引字符编码映射表中的字符编码对应的字形索引,从而生成新字体文件。字符编码表如下表3:
表3
0030 |
0031 |
0032 |
0033 |
0034 |
0035 |
0036 |
0037 |
0038 |
0033 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
调整前(即原字体文件中)的字形索引字符编码映射表如下表4:
表4
调整后(即新字体文件中)的字形索引字符编码映射表如下表5:
表5
接着,基于新字体文件生成电子文档。首先,在步骤S104中,获取待隐藏的文本信息中的字符的字符编码。然后,在步骤S105中,根据获取的字符编码从新字体文件中的字形索引字符编码映射表中找到对应的字形索引,并在步骤S106中,将找到的字形索引代替字符编码写入电子文档中。例如,对于字符“0”,其字符编码为0x0030,根据这个字符编码可从新字体文件中的字形索引字符编码映射表(即表5)中得到其对应的字形索引为28,因此,将字形索引28代替字符编码0x0030写入电子文档中。
在打开隐藏了文本信息的电子文档时,在安装了新字体文件的情况下,在步骤S107中根据隐藏的文本信息中的字符的字形索引从新字体文件中获取字形描述数据,并在步骤S108中根据获取的字形描述数据显示隐藏的文本信息。例如,对于字符“0”,如上所述写入电子文档的字形索引为28,此时,即可从新字体文件中的位置28处得到字符“0”的字形描述数据。而如果没有安装新字体文件而是安装的原字体文件的话,则从原字体文件中的位置28处得到的是字符“9”的字形描述数据,此时将显示的是字符“9”,而不是字符“0”。同理,以上整段文本信息则会显示为如下结果:
89月71日在无锡举行的中国国际物联网(传感网)大会传出消息,汽车移动物联网(车联网)项目将列为我国重大专项第三专项的重要项目。目前相关内容已上报国务院,一期拨款有望达百亿级别,预期7979年实现可控车辆规模述7亿。
从上显示结果可看出,与原始文本信息有了很大区别,达到了信息隐藏的效果。
当然,这个例子比较简单,可以对文本信息中的所有字符进行调整修改,或者在电子文档中新建一些新的字符,这样会使加密效果更加好。
(第二实施例)
本实施例的技术构思是通过改变字形索引字符编码映射表中的字形索引对应的字符编码,从而改变字形索引与字符编码之间的映射关系,而字形描述数据在字体文件中的位置并不改变。
图2是根据本发明的第二实施例的文本信息隐藏方法的流程图。
如图2所示,首先,在步骤S201中,获取待隐藏的文本信息所使用的原字体文件。
接着,基于原字体文件生成新字体文件,具体地讲,在步骤S202中,修改原字体文件中的字形索引字符编码映射表中的字形索引对应的字符编码,从而生成新字体文件。
接着,基于新字体文件将待隐藏的文本信息写入到电子文档中。具体地讲,首先,在步骤S203中,从原字体文件中的字形索引字符编码映射表中获取待隐藏的文本信息中的字符的字符编码对应的字形索引,然后,在步骤S204中,根据获取的字形索引从新字体文件中的字形索引字符编码映射表中找到对应的字符编码,并在步骤S205中,将找到的字符编码写入到电子文档中。
在打开隐藏了文本信息的电子文档时,在安装了新字体文件的情况下,在步骤S206中,根据隐藏的文本信息中的字符的字符编码从新字体文件中的字形索引字符编码映射表中获取对应的字形索引,并在步骤S207中,根据获取的字形索引从新字体文件中获取对应的字形描述数据,在步骤S208中根据获取的字形描述数据显示隐藏的文本信息。
以下将通过一个具体的示例来对本发明的第一实施例进行详细描述。
在该示例中,假设待隐藏的文本信息如下信息:
首先,在步骤S201中,获取待隐藏的文本信息所使用的原字体文件。
接着,在步骤S202中,修改原字体文件中的字形索引字符编码映射表中的字形索引对应的字符编码,从而生成新字体文件。
假设原字体文件中字形索引字符编码映射表如下表6:
表6
字符 |
编码 |
字符索引 |
1 |
0x0031 |
1 |
点 |
0x70B9 |
2 |
在 |
0x5728 |
3 |
地 |
0x5730 |
4 |
铁 |
0x94C1 |
5 |
A |
0x0041 |
6 |
口 |
0x53E3 |
7 |
见 |
0x89C1 |
8 |
。
|
0x3002 |
9 |
调整之后,得到如下新的字形索引字符编码映射表如下表7:
表7
这里,需要指出的是,虽然新字体文件中的字形索引与字符编码之间的映射关系与原字体文件中的映射关系不同,但是新字体文件中的字形描述数据的位置并没有发生改变,例如,对于字符“1”,其字形描述数据在新字体文件中的位置仍然是1。
接着,在步骤S203中,从原字体文件中的字形索引字符编码映射表中获取待隐藏的文本信息中的字符的字符编码对应的字形索引,然后,在步骤S204中,根据获取的字形索引从新字体文件中的字形索引字符编码映射表中找到对应的字符编码,并在步骤S205中,将找到的字符编码写入到电子文档中。例如,对于字符“1”,根据原字体文件中的字形索引字符编码映射表(即表6),其字形索引为1,也就是说,字符“1”的字形描述数据在字体文件中的位置为1。根据字形索引1,从新字体文件中的字形索引字符编码映射表(即表7)中可得到其对应的字符编码为0x4E2D,即字符“中”,然后,将字符编码0x4E2D写入到电子文档中。
在打开隐藏了文本信息的电子文档时,在步骤S206中,根据隐藏的文本信息中的字符的字符编码从新字体文件中的字形索引字符编码映射表中获取对应的字形索引,并在步骤S207中,根据获取的字形索引从新字体文件中获取对应的字形描述数据。例如,对于字符“1”,如上所述其写入电子文档字符不是其真实的字符编码0x0031,而是字符“中”的字符编码0x4E2D。此时,在安装了新字体文件的情况下,根据字符编码0x4E2D,可从新字体文件中的字形索引字符编码映射表(即表7)获得其对应的字形索引为1,然后在字体文件中的位置1处即可获得字符“1”的字形描述数据。而如果没有安装新字体文件而安装的是原字体文件的话,则根据原字体文件中的字形索引字符编码映射表(即表6),其对应的字形索引并不是1,而是例如40,此时根据这个字符索引从原字体文件中获得的就是字符“中”的字形描述数据。因此,待隐藏的文本信息将会如下显示:
也就是说,如果想要看到真正正确的文本信息,只需要获取修改后的新字体文件,然后将“中华人民共和国成立了”的字体设置为修改后的字体,就能看到正确的信息:“11点在地铁A口见。”。
这里指出,除了按照上述第一实施例或第一实施例方法基于原字体文件生成新字体文件之外,还可新建字形描述数据,并按照字形索引将新建的字形描述数据代替原字体文件中的字形描述数据写入新字体文件中或者添加到新字体文件中。比如,仍以文本信息“11点在地体A口见”为例,可以为其中的字符“A”新建一个新的字形描述数据“东南”,并将该字形描述数据代替字符“A”的字形描述数据写入到新字体文件中的位置1处。在这种情况下,仍按照以上方法,将“中华人民共和国成立了”的字符编码写入到电子文档中,但是,此时根据新字体文件打开该电子文档时,将会显示为“11点在地铁东南口见。”从这个例子可看出,通过新建字形描述,不仅可以丰富要表达的信息,更加灵活,而且可在不改变字符编码的前提下修改要表达的内容,从而更进一步提高隐藏文本信息被破解的难度。
(第三实施例)
本实施例是第一实施例和第二实施例的应用示例。在该示例中,将根据本发明的第一实施例或第二实施例的文本信息隐藏方法应用于图书馆,主要包括以下三个步骤:
(1)字体文件制作
针对图书馆需求,按照第一实施例或第二实施例的文本信息隐藏方法修改字体文件,生成专有的字体文件。
(2)电子文档制作
基于制作的专有的字体文件生成需要公开的文档。
(3)电子文档的查看
如图3所示,用户可以在图书馆的机器上阅读显示正确文本信息的电子文档,或者通过网络获取和安装专有的字体文件来查看正确的文本信息。如果用户将电子文档拷贝出图书馆,使用其他机器查看该文档,会得到错误的信息,并且也不能得到正确的文本信息。这样可以对图书馆的电子文档的传播进行限制。
相应地,为了实现以上方法,本发明提供一种文本信息隐藏装置。如图4所示,该装置包括输入单元401、字体文件生成单元402、信息隐藏单元403、字形数据获取单元404和显示单元405,其中,输入单元401用于输入待隐藏的文本信息和该文本信息所使用的原字体文件;字体文件生成单元402用于通过修改原字体文件中的字形索引与字符编码之间的映射关系来生成新字体文件;信息隐藏单元403用于根据新字体文件修改所述文本信息,并将修改的文本信息写入电子文档中;字形数据获取单元404用于在打开电子文档时从新字体文件中获取所述文本信息中的字符的字形描述数据;显示单元405用于根据获取的字形描述数据显示所述文本信息。
此外,该装置还可包括字形新建单元,其用于新建字形描述数据,并按照字形索引将新建的字形描述数据代替原字体文件中的字形描述数据写入新字体文件中或者添加到新字体文件中。
以上各个单元的具体操作与上述方法中的相应步骤相同,因此,省略其详细描述。
通过以上技术方案,本发明可获得如下技术效果:
(1)实现简单
不需要对文本信息的字符编码进行改变,最多只要进行一对一的映射,计算量小。
(2)安全性高
由于字体文件和文本信息是分开的,所以如果严格控制字体文件,则破解隐藏的文本信息的可能性非常小。
(3)隐藏性高
使用的完全是原版显示,隐藏的文本信息与电子文档中正常的不隐藏数据的显示完全相同。而且,隐藏结果完全是一对一的,隐藏信息比为100%。
(4)鲁棒性高
如果部分隐藏文本信息遭到破坏,不会影响其它的隐藏文本信息。
以上已参照附图和实施例对本发明进行了详细描述,但是,应该理解,本发明并不限于以上所公开的具体实施例,任何基于本说明书所公开的技术方案的变型都应包括在本发明的保护范围内。