一种基于二维码的信息隐藏方法与流程

文档序号:12597201阅读:185来源:国知局
一种基于二维码的信息隐藏方法与流程
本发明属于信息领域,尤其涉及一种基于二维码的信息隐藏方法。
背景技术
:一维条码自出现以来,得到了人们的普遍关注,发展速度十分迅速。它的使用,极大地提高了数据采集和信息处理的速度,提高了工作效率,并为管理的科学化和现代化做出了很大贡献。由于受信息容量的限制,一维条码仅仅是对“物品”的标识,而不是对“物品”的描述。故一维条码的使用,不得不依赖数据库的存在。在没有数据库和不便联网的地方,一维条码的使用受到了较大的限制,有时甚至变得毫无意义。另外,要用一维条码表示汉字的场合,显得十分不方便,且效率很低。现代高新技术的发展,迫切要求用条码在有限的几何空间内表示更多的信息,从而满足千变万化的信息表示的需要。二维条码正是为了解一维条码无法解决的问题而产生的。二维条码是一种特殊的条码技术,简称二维码。与一维条码技术相比,它采用矩形、点、六边形等几何图案来表示信息,编码时使用若干个与二进制相对应的几何形体来表示文字数值信息,解码时则通过图像输入或光电扫描设备自动识读信息。除信息表示方法不同外,二维码仍具备普通条码的一些共性,如每种码制有特定的字符集;每个字符占有一定的宽度;具有校验功能等。因为二维码具备快速响应和快速数据访问的能力,所以随着智能手机的逐渐普及,二维码编解码功能软件已经几乎成为了智能手机的标配软件。目前常用或知名的二维条码编码机制有DataMatrix,MaxiCode,QRCode,汉信码等,其中QR码是目前应用最广泛的条码之一,该种编码最多可以表示7089个字符,而传统一维条码最多则只能表示20个字符。借助于智能移动终端设备的普及,二维条码的应用场景越来越多,利用二维条码在移动终端用户之间快速交互信息的应用软件随处可见,渐渐成为一种时尚。快速响应码(QR码)近年来由于具有大容量的数据,较强抗破坏性,快速解码等优势,在日常生活中的广泛应用。人们可以使用它来传输秘密信息,而无需检查。技术实现要素:本发明基于QR码对编码的原始数据的纠错性能,将需要隐藏的信息以基于比特位并提供BCH纠错的形式嵌入到编码中,然后再采用与隐藏信息嵌入相对应的提取方法提取隐藏信息,从而达到传递隐藏信息的目的。也就是说,一般的扫码器可以读取加密的QR码的原始内容,只有授权的系统可以提取隐藏在QR码的信息。本发明的技术方案基于第三方开源条码生成软件zxing完成,具体涉及:一种基于二维码的信息隐藏方法,其特征在于,包括:隐藏信息的嵌入步骤:选定作为信息隐藏载体的二维条码的版本和纠错码的等级,然后将隐藏信息转换为二进制字符串,并基于BCH编码原理得到包含纠错码的隐藏信息的二进制字符串,最后将普通信息按照QRCode编码规则编码成构造二进制矩阵,并基于包含纠错码的隐藏信息的二进制字符串得到掩码过后的二进制矩阵,并将该矩阵根据“0”、“1”进行黑白着色并转换为二维码图片;隐藏信息的提取步骤:用户使用客户端读物二维码后,进行原始二进制矩阵的转换后,进行RS纠错并得到正确字符串,最终根据得到的正确字符串转换为明文形式,获得二维码携带的隐藏的信息。在上述的一种基于二维码的信息隐藏方法,所述隐藏信息的嵌入步骤具体包括:步骤1,根据二维条码中的普通信息的长度与类型以及计算所需嵌入的隐藏信息增加BCH纠错码后的二进制长度,选定出作为信息隐藏载体的二维条码的版本和纠错码的等级。步骤2,将隐藏信息转换为二进制字符串,根据隐藏信息需要纠错的位数对该字符串进行分组,每组含k位二进制信息,并利用BCH编码原理计算得出每组二进制信息的n位BCH纠错码。若二进制字符串在分组后存在某组二进制信息不足k位时,应先在二进制字符串添“0”补足,直到各个分组都包含k位二进制位。在得到各组的BCH纠错码后将每组的BCH纠错码分别插入至相应有效信息后,形成包含纠错码的隐藏信息的二进制字符串,即为所需嵌入二维码编码中的信息。步骤3,在将普通信息按照QRCode编码规则编码成构造二进制矩阵时,根据步骤2最后得出的字符串的长度在不破坏QRCode基本结构的情况下选中矩阵的数据和纠错码字区域的一块矩形区域,按照构造规则将字符串按位依次放入该区域中替换原本对普通信息编码后的二进制信息,当二进制信息长度小于矩形区域可放置长度时选择在末尾添0补足。在二进制矩阵编码构造完成后,再通过掩码对整个数据和纠错码区域进行掩膜,使得二维码图形中的有颜色且白色除外的区域与白色区域能够比率最优的分布。步骤4,将掩码过后的二进制矩阵根据“0”、“1”进行着色并转换为图片。在上述的一种基于二维码的信息隐藏方法,所述隐藏信息的提取步骤具体包括:步骤1,用户使用客户端对准作为隐藏信息载体的二维码进行扫描,在对二维码图片进行解析后再解掩码生成所携带信息的原始二进制矩阵后,根据隐藏信息嵌入时选中的区域,将该区域的二进制信息按嵌入顺序依次提取出来。然后一方面将提取出来的信息根据BCH分组去除由于长度不足而在放入矩阵时在隐藏信息末尾手动添加的二进制位“0”,得到正确的包含纠错码的隐藏信息的二进制字符串;另一方面,对整个二维码的二进制矩阵利用二维码本身携带的纠错码字对二进制矩阵进行RS纠错,还原二维码本身携带的普通信息,通过解析得到二维码携带的普通信息。步骤2,对步骤1最后得到的正确字符串进行分组,每组含k+n位,其中k,n对应隐藏信息嵌入步骤2的k,n值,并对每组二进制串进行BCH解码,得到每组的有效二进制信息;步骤3,将步骤2中最后得到的二进制字符串转换为明文形式,即为二维码携带的隐藏的信息。隐藏信息的提取根据用户是否使用实施方案中的解码器分为两种情况:若用户使用本实施方案中的提取方法,用户使用特定客户端对准作为藏信息载体的二维条码进行扫描,客户端中的解码器随即利用上述提取方法得到隐藏的信息。若用户没有使用本实施方案中提取方法,而是使用普通带有扫码功能的解码器对所生成的带有隐藏信息的二维条码图像进行扫描,则只能读取到二维条码中所存储的普通信息,而获取不到所隐藏其中的秘密信息。因此,本发明具有如下优点:将信息隐藏与二维码相结合,把二维码作为信息隐藏的载体,利用编码机制的特点直接将隐藏信息写入,通过不同的解码器的读取,普通解码器只能读取出二维码中的普通信息,而无法读取也不会想到在二维码之中还存有隐藏信息,只有利用根据本发明提出的特殊算法设计的解码器才能解读其中的隐藏信息的方法。附图说明图1是本发明的隐藏信息嵌入流程图。图2是本发明的隐藏信息提取流程图。图3是采用本发明的方法生成的二维码示意图。具体实施方式本发明基于QR码对编码的原始数据的纠错性能,将需要隐藏的信息以基于比特位并提供纠错的形式嵌入到编码中,然后再采用特定的隐藏信息的提取方法进行提取,从而达到传递隐藏信息的目的。本发明提供的方法能够用计算机软件技术实现流程。一、本发明主要包含两个方面:隐藏信息的嵌入与隐藏信息的提取。隐藏信息的嵌入包含以下步骤:步骤1,根据二维条码中的普通信息的长度与类型以及计算所需嵌入的隐藏信息增加BCH纠错码后的二进制长度,选定出作为信息隐藏载体的二维条码的版本和纠错码的等级。步骤2,将隐藏信息转换为二进制字符串,根据隐藏信息需要纠错的位数对该字符串进行分组,每组含k位二进制信息,并利用BCH编码原理计算得出每组二进制信息的n位BCH纠错码。若二进制字符串在分组后存在某组二进制信息不足k位时,应先在二进制字符串添“0”补足,直到各个分组都包含k位二进制位。在得到各组的BCH纠错码后将每组的BCH纠错码分别插入至相应有效信息后,形成包含纠错码的隐藏信息的二进制字符串,即为所需嵌入二维码编码中的信息。步骤3,在将普通信息按照QRCode编码规则编码成构造二进制矩阵时,根据步骤2最后得出的字符串的长度在不破坏QRCode基本结构的情况下选中矩阵的数据和纠错码字区域的一块矩形区域,按照构造规则将字符串按位依次放入该区域中替换原本对普通信息编码后的二进制信息,当二进制信息长度小于矩形区域可放置长度时选择在末尾添0补足。在二进制矩阵编码构造完成后,再通过掩码对整个数据和纠错码区域进行掩膜,使得二维码图形中的有颜色(白色除外)区域与白色区域能够比率最优的分布。步骤4,将掩码过后的二进制矩阵根据“0”、“1”进行着色并转换为图片。隐藏信息的提取包含以下步骤:步骤1,用户使用客户端对准作为隐藏信息载体的二维码进行扫描,在对二维码图片进行解析后再解掩码生成所携带信息的原始二进制矩阵后,根据隐藏信息嵌入时选中的区域,将该区域的二进制信息按嵌入顺序依次提取出来。然后一方面将提取出来的信息根据BCH分组去除由于长度不足而在放入矩阵时在隐藏信息末尾手动添加的二进制位“0”,得到正确的包含纠错码的隐藏信息的二进制字符串;另一方面,对整个二维码的二进制矩阵利用二维码本身携带的纠错码字对二进制矩阵进行RS纠错,还原二维码本身携带的普通信息,通过解析得到二维码携带的普通信息。步骤2,对步骤1最后得到的正确字符串进行分组,每组含(k+n)(其中k,n对应隐藏信息嵌入步骤2的k,n值)位,并对每组二进制串进行BCH解码,得到每组的有效二进制信息步骤3,将步骤2中最后得到的二进制字符串转换为明文形式,即为二维码携带的隐藏的信息。隐藏信息的提取根据用户是否使用实施方案中的解码器分为两种情况:若用户使用本实施方案中的提取方法,用户使用特定客户端对准作为藏信息载体的二维条码进行扫描,客户端中的解码器随即利用上述提取方法得到隐藏的信息。若用户没有使用本实施方案中提取方法,而是使用普通带有扫码功能的解码器对所生成的带有隐藏信息的二维条码图像进行扫描,则只能读取到二维条码中所存储的普通信息,而获取不到所隐藏其中的秘密信息。二、下面结合具体案例进行说明。对于隐藏信息的嵌入参见图1,实施例以普通信息为http://www.whu.edu.cn,隐藏信息为“123044162062”,对于隐藏信息可纠4位错为例对本发明的流程进行一个具体的阐述,如下:定义Version为二维码的版本,t为BCH纠错位数,s为隐藏信息转换的二进制字符串,t为隐藏信息增加BCH纠错码后的二进制字符串步骤1,根据二维条码中的普通信息的长度与类型以及计算所需嵌入的隐藏信息增加BCH纠错码后的二进制长度,选定出作为信息隐藏载体的二维条码的版本和纠错码的等级。实施例具体的实施过程说明如下:根据一般情况下二维码携带普通信息的长度,实施例选择二维码的版本version=3,二维码矩阵是29*29,总共能容纳70个码字,对于四种纠错等级L、M、Q、H的纠错容量分别为:7、13、18、22个码字,将隐藏信息转换为二进制字符串为:s=1110010100110000000001110101000001110,长度为37位,由于总共需纠四位错,选择将s分为两组,每组进行BCH编码,即t=2,根据BCH编码原理选取本原BCH(31,21)码,即21位有效信息的字符串生成10位BCH纠错码。因此最后需嵌入的包含BCH纠错码的二进制信息应有62位,考虑到各种纠错等级的纠错容量,我们选择纠错等级为Q。步骤2,将隐藏信息转换为二进制字符串,根据隐藏信息需要纠错的位数对该字符串进行分组,每组含k位二进制信息,并利用BCH编码原理计算得出每组二进制信息的n位BCH纠错码。若二进制字符串在分组后存在某组二进制信息不足k位时,应先在二进制字符串添“0”补足,直到各个分组都包含k位二进制位。在得到各组的BCH纠错码后将每组的BCH纠错码分别插入至相应有效信息后,形成包含纠错码的隐藏信息的二进制字符串,即为所需嵌入二维码编码中的信息。实施例具体的实施过程说明如下:首先将s分为两组,每组长度21位,分别为:000001110010100110000、000001110101000001110。然后分别计算两组二进制信息的BCH纠错码。BCH码的定义为:若循环码的生成多项式具有如下形式:g(x)=LCM[m1(x),m3(x),...,m2t-1(x)]其中LCM表示最小公倍式,t为纠错个数,mi(x)为素多项式,则由此生成的循环码称为BCH码。BCH码部分不可约多项式表如下:2阶173阶1134阶1233375075阶145375567在本实施例中由步骤1的实施例可得BCH纠错码采用BCH(31,21)码,t=2,则n=31=25–1,通过查询上述不可约多项式表可得:m1(x)=(45)8=100101=x5+x2+1;m3(x)=(75)8=111101=x5+x4+x3+x2+1;所以g(x)=LCM[m1(x),m3(x)]=x10+x9+x8+x6+x5+x3+1=11101101001,将每组21位二进制信息对生成多项式进行模2运算得到两组二进制信息的BCH纠错码分别为:1000101110、0011110100。最后将纠错码插入相应的二进制有效信息后面得到包含BCH纠错码的隐藏信息的二进制字符串。本例中将上述纠错码插入字符串s中得到字符串t,可得t的结果为:00000111001010011000010001011100000011101010000011100011110100。步骤3,在将普通信息按照QRCode编码规则编码成构造二进制矩阵时,根据步骤2最后得出的字符串的长度在不破坏QRCode基本结构的情况下选中矩阵的数据和纠错码字区域的一块矩形区域,按照构造规则将字符串按位依次放入该区域中替换原本对普通信息编码后的二进制信息,当二进制信息长度小于矩形区域可放置长度时选择在末尾添0补足。在二进制矩阵编码构造完成后,再通过掩码对整个数据和纠错码区域进行掩膜,使得二维码图形中的有颜色(白色除外)区域与白色区域能够比率最优的分布。实施例的具体实施过程如下:由步骤2的实施过程可知,t的长度为62位,由于在二维码矩阵编码过程中,二进制位是两位一起放置,因此为了方便起见,选中的矩形区域的宽度应为偶数,从而在本例中在QRCode编码矩阵中的数据和纠错码区域选中的矩形区域应为7*10区域,由于区域可放置总长度位63位,t的长度位62位,因此在末尾需添八位0进行补足。为了方便起见,我们将该7*10矩形区域放于该二维码正中间,该位置正好处于矩阵的纠错码和数据区域,不会破坏QRCode的基本结构。当字符串t不插入二维码二进制矩阵时,二维码矩阵中间7*10区域的编码为:当插入字符串t后,二维码矩阵中间7*10区域的编码变为:编码完成后对整个二进制矩阵进行掩码,使得二进制矩阵0、1分布相对均匀,由于整个二进制矩阵过大,不方便直接展示,下面是对中间7*10矩形区域进行掩码的结果:步骤4,将掩码过后的二进制矩阵根据“0”、“1”进行着色并转换为图片。实施例的具体实施过程如下:对步骤3实施例最终生成的二进制矩阵进行着色,通常而言,二维码显示为黑白两色,因此在本例中,选择将二进制位为“1”着色为黑色,二进制位为“0”着色为白色,最终生成的二维码图片如图3。对于隐藏信息的提取,参见图2,实施例以上述例子中生成的包含隐藏信息的二维码为例对本方案的流程做一个具体的阐述:定义:T为提取隐藏信息的二进制字符串,S为提取出来包含纠错码的隐藏信息的二进制字符串,M为隐藏的信息步骤1,用户使用客户端对准作为隐藏信息载体的二维码进行扫描,在对二维码图片进行解析后再解掩码生成所携带信息的原始二进制矩阵后,根据隐藏信息嵌入时选中的区域,将该区域的二进制信息按嵌入顺序依次提取出来。然后一方面将提取出来的信息根据BCH分组去除由于长度不足而在放入矩阵时在隐藏信息末尾手动添加的二进制位“0”,得到正确的包含纠错码的隐藏信息的二进制字符串;另一方面,对整个二维码的二进制矩阵利用二维码本身携带的纠错码字对二进制矩阵进行RS纠错,还原二维码本身携带的普通信息,通过解析得到二维码携带的普通信息。实施例的具体实施过程如下:首先,客户端对准二维码进行扫描解析,将二维码图片转换为可以进行操作的二进制矩阵,一定像素区域内为黑色的区域用二进制位“1”表示,为白色的区域用二进制位“0”来表示,最后生成一个29*29的二进制矩阵。其中中间隐藏信息的7*10区域的二进制矩阵解析出来的效果如下:然后,根据二维码编码时所选择的掩码,对生成的二进制矩阵进行解掩码,还原出原始二进制矩阵。上述矩阵解掩码后的矩阵如下:最后,将该区域的二进制信息按照嵌入顺序依次提取出来,并去除由于长度不足手动添加的“0”位。本例中将上述二进制矩阵提取出来得到的二进制字符串为:0000011100101001100001000101110000001110101000001110001111010000000000由于在嵌入包含纠错码隐藏信息的二进制字符串时,采用的时BCH(31,21)码,所以嵌入的字符串长度应为62位,去除上述提取出来的二进制字符串的为“0”的后8位得到的正确的包含纠错码的隐藏信息的二进制字符串应为:S=00000111001010011000010001011100000011101010000011100011110100步骤2,对步骤1最后得到的正确字符串进行分组,每组含(k+n)(其中k,n对应隐藏信息嵌入步骤2的k,n值)位,并对每组二进制串进行BCH解码,得到每组的有效二进制信息实施例的具体实施过程如下:首先,对提取出来的正确的二进制字符串进行分组。由于对隐藏信息纠错的编码选择的BCH(31,21),因此每组应含31位。将上述过程中得到的字符串按每组31位进行分组,从而可得到两组二进制串分别为:0000011100101001100001000101110、0000011101010000011100011110100。然后,分别对每组进行BCH解码,得到正确的有效信息。对字符串0000011100101001100001000101110进行解码得到的正确信息为:000001110010100110000;对字符串0000011101010000011100011110100进行解码得到的正确信息为:000001110101000001110。最后,将各组解码得到的正确信息按照分组顺序进行拼接得到最终的隐藏信息的二进制字符串,最终结果为:T=000001110010100110000000001110101000001110步骤3,将步骤2中最后得到的二进制字符串转换为明文形式,即为二维码携带的隐藏的信息。实施例的实施过程如下:将字符串T利用二进制转十进制的方法转换为数值型为:M=123044162062。本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属
技术领域
的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1