CN109325367A - 信息隐藏方法、装置、设备及计算机可读存储介质 - Google Patents
信息隐藏方法、装置、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN109325367A CN109325367A CN201810971306.XA CN201810971306A CN109325367A CN 109325367 A CN109325367 A CN 109325367A CN 201810971306 A CN201810971306 A CN 201810971306A CN 109325367 A CN109325367 A CN 109325367A
- Authority
- CN
- China
- Prior art keywords
- byte
- array
- target
- random
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
Abstract
本发明提供一种信息隐藏方法、装置、设备及计算机可读存储介质。方法包括:根据预设变换规则对隐藏数据A进行变换,得到2m个二进制的字符串C;确定每个字符串C对应的第一字节数组D;根据预设规则生成q个随机数组E;根据随机数组E、预设载体数据B确定与每个随机数组E对应的第二字节数组F;根据第一字节数组D、第二字节数组F确定目标随机数组E、目标字节数组D;根据目标随机数组E将目标字节数组D嵌入载体数据B中。本发明的方案将变换过的隐藏数据嵌入载体数据中,能够增强隐藏数据的保密性,并且随机生成嵌入位置,还使得不易检测到载体数据内嵌入了其他数据。
Description
技术领域
本发明涉及技术网络安全技术,尤其涉及一种信息隐藏方法、装置、设备及计算机可读存储介质。
背景技术
近年来,随着我国信息化建设的不断推进及信息技术的广泛应用,在促进经济发展、社会进步、科技创新的同时,也带来了十分突出的网络安全和隐私保护问题。隐蔽通信技术可以在通信中保护用户的私有信息,对用户通过不安全的互联网进行通信具有重要价值。信息隐藏技术将用户的私有敏感信息隐藏到语音、图像、视频等多媒体数据中,是实现隐蔽通信的关键技术,得到了信息安全领域研究人员的重视。
1999年在北京举办了我国第一次信息隐藏学术研究会议,国内逐渐出现研究信息隐藏的团体和研究机构。信息隐藏可以通过多种方式实现,包括基于内容的信息隐藏、基于行为的信息隐藏等。基于行为的信息隐藏利用人类在物理世界或网络空间中的行为来隐蔽传输私密信息。目前应用较多的主要是基于内容的信息隐藏,即将私密信息隐藏到语音、图像、视频等多媒体载体中。
信息隐写系统的设计需要在保证安全性的同时尽量提高隐藏容量。安全性包括不可感知性和不可检测性,不可感知性主要针对人的感官感知能力,不可检测性则针对计算机的检测能力。因此,在隐藏信息时,如何提高不可感知性、不可检测性是本领域技术人员亟需解决的技术问题。
发明内容
本发明提供一种信息隐藏方法、装置、设备及计算机可读存储介质,以提高现有技术中隐藏信息时的不可感知性和不可检测性。
本发明的第一个方面是提供一种信息隐藏方法,包括:
根据预设变换规则对隐藏数据A进行变换,得到2m个二进制的字符串C;其中,m为预设值;
确定每个所述字符串C对应的第一字节数组D;其中,每个所述第一字节数组D中包括n个字节;
根据预设规则生成q个随机数组E,其中,每个所述随机数组E中包括n个随机数;
根据所述随机数组E、预设载体数据B确定与每个所述随机数组E对应的第二字节数组F;
根据第一字节数组D、第二字节数组F确定目标随机数组E、目标字节数组D;
根据所述目标随机数组E将所述目标字节数组D嵌入所述载体数据B中。
本发明的另一个方面是提供一种信息隐藏装置,包括:
变换模块,用于根据预设变换规则对隐藏数据A进行变换,得到2m个二进制的字符串C;其中,m为预设值;
第一确定模块,用于确定每个所述字符串C对应的第一字节数组D;其中,每个所述第一字节数组D中包括n个字节;
生成模块,用于根据预设规则生成q个随机数组E,其中,每个所述随机数组E中包括n个随机数;
第二确定模块,用于根据所述随机数组E、预设载体数据B确定与每个所述随机数组E对应的第二字节数组F;
目标确定模块,用于根据第一字节数组D、第二字节数组F确定目标随机数组E、目标字节数组D;
隐藏模块,用于根据所述目标随机数组E将所述目标字节数组D嵌入所述载体数据B中。
本发明的又一个方面是提供一种信息隐藏设备,包括:
存储器;
处理器;以及
计算机程序;
其中,所述计算机程序存储在所述存储器中,并配置为由所述处理器执行以实现如上述第一方面所述的信息隐藏方法。
本发明的再一个方面是提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现如上述第一方面所述的信息隐藏方法。
本发明提供的信息隐藏方法、装置、设备及计算机可读存储介质的技术效果是:
本发明提供的信息隐藏方法、装置、设备及计算机可读存储介质,包括根据预设变换规则对隐藏数据A进行变换,得到2m个二进制的字符串C;其中,m为预设值;确定每个字符串C对应的第一字节数组D;其中,每个第一字节数组D中包括n个字节;根据预设规则生成q个随机数组E,其中,每个随机数组E中包括n个随机数;根据随机数组E、预设载体数据B确定与每个随机数组E对应的第二字节数组F;根据第一字节数组D、第二字节数组F确定目标随机数组E、目标字节数组D;根据目标随机数组E将目标字节数组D嵌入载体数据B中。本发明提供的方法、装置、设备及计算机可读存储介质中,将变换过的隐藏数据嵌入载体数据中,能够增强隐藏数据的保密性,同时,字符串C进行拆分,随机生成载体数据中的嵌入位置,再根据载体数据在嵌入位置的载体数值、拆分后的字符串C确定最终的目标随机数组E、目标字节数组D,从而找到不易被察觉的嵌入位置以及嵌入的字符串,并且随机生成嵌入位置,还使得不易被检测到载体数据内嵌入了其他数据,因此,本发明提供的方法、装置、设备及计算机可读存储介质能够达到在载体数据中更好地隐藏数据的目的。
附图说明
图1为本发明一示例性实施例示出的信息隐藏方法的流程图;
图2为本发明另一示例性实施例示出的信息隐藏方法的流程图;
图3为本发明一示例性实施例示出的信息隐藏装置的结构图;
图4为本发明另一示例性实施例示出的信息隐藏装置的结构图;
图5为本发明一示例性实施例示出的信息隐藏设备的结构图。
具体实施方式
图1为本发明一示例性实施例示出的信息隐藏方法的流程图。
如图1所示,本实施例提供的信息隐藏方法包括:
步骤101,根据预设变换规则对隐藏数据A进行变换,得到2m个二进制的字符串C。
其中,m为预设值。可以根据需求预先设置m值。
具体地,需要隐藏的数据A可以是长为L的二进制位串。在计算机系统中,传输数据时实际传输的是二进制的数据,即由0、1组成的字符串。即使一些数据在用户看来是文字、视频、图片等,但这些数据在计算机系统中实际传输时均是二进制的字符串。因此,若隐藏数据最初不是二进制结构,可以将其转换为二进制结构。
进一步的,可以对二进制的隐藏数据A进行变换,得到与其对应的二进制字符串C,具体的变换规则可以预先设置,例如,将0改为1,将1改为0。
实际应用时,在根据预设变换规则对A进行变换时,还可以根据字符串C的次序值确定字符串C内具体的数值。其中,字符串的次序值是指在多个字符串C中,各个字符串的次序,如第0个字符串C,第1个字符串C等。可以根据字符串次序值确定是否满足预设需求,若是,则C[i][j]=A[j],否则,C[i][j]=~A[j]。其中的“~”是取反符号,对1取反为0,对0取反为1。A[j]是隐藏数据A中的第j位数值,C[i][j]是第i个字符串C中的第j位数值。通过上述变化关系,能够得到多个与隐藏数据A具有关联关系的字符串C。
此处得到的2m个二进制的字符串C为备选的字符串,可以进一步从中选取目标字符串,再将目标字符串嵌入到载体数据中。
步骤102,确定每个字符串C对应的第一字节数组D;其中,每个第一字节数组D中包括n个字节。
其中,可以预先设置字符长度k,将字符串C中包括的二进制数字按照每k位一个字节进行分组,得到n个字节,可以以每个字节作为一个元素,构成每个字符串C对应的第一字节数组D,即第一字节数组D中包括n个元素,每个元素是k位的二进制数字。还可以将每个字节转换为十进制,从而得到包括n个十进制数字的第一字节数组D。
具体的,可以根据字符长度k确定n值。若L能被字符长度k整除,则n等于字符长度L与k的商。若L不能被k整除,则n等于L与k的商再加1的值,例如,L等于13,k等于4,那么L与k相除商3余1,则n等于4。
进一步的,若L能被字符长度k整除,那么在对字符串C中的字符分组时,会有一组不足k个数字,此时,可以约定将最后一组或者第一组数值前补0,从而得到包括k个数字的字节。
实际应用时,第一字节数组D的数量与字符串C的数量相同,都是2m个。
步骤103,根据预设规则生成q个随机数组E,其中,每个随机数组E中包括n个随机数。
其中,还可以设置生成随机数的预设规则,随机数为整数。可以采用伪随机数产生器生成q个长度为n的整数序列。同一个随机数组E中的随机数不重复。
假设伪随机数产生器用最简单的线性同余法构造,计算随机数组E中的参数的迭代公式为x[i+1]=(a*x[i]+b)mod S,其中a和b为线性同余法的参数,一般可在[1,S-1]范围内取值,S为载体数据的长度值,mod为取余运算。初始化参数x[0]可取[0,S-1]范围内的随机整数。为保证同一个整数序列中的数字不重复,制定如下规则:若按迭代公式计算得到的x[i+1]已经在序列前面出现,则反复令x[i+1]=(x[i+1]+1)mod S,直到x[i+1]没有在序列中出现。作为示例,令q=5。线性同余法的初始参数(a,b,x[0])的取值随机生成,示例中分别为(14,9,7)、(17,1,36)、(20,9,26)、(18,15,6)、(17,36,35)。可以由这些初始参数分别得到对应的随机数组E。
具体地,随机数组用于确定嵌入与隐藏数据对应的字符串C的位置,本实施例中,将字符串C分为n个字节,因此,需要在载体数据中确定n个位置,分别用于嵌入这n个字节,因此,每组随机数组中需要包括n个随机数。例如随机数为5,则在载体数据的第5个字节中嵌入隐藏信息。
进一步,随机数组E中的随机数小于载体数据B的最大长度,例如,载体数据共包括40个字节,那么最后一个字节对应的位置标识为39,则随机数组E中的随机数小于等于39。
实际应用时,可以生成q个随机数组E,再在其中选取目标随机数组E,根据目标随机数组E确定嵌入字符串C的位置。
步骤104,根据随机数组E、预设载体数据B确定与每个随机数组E对应的第二字节数组F。
其中,可以预先设置载体数据B,该载体数据具体可以是多媒体载体数据,如图片、视频、音频等。可以将根据隐藏数据生成的字符串C嵌入载体数据B中。
具体地,可以根据生成的随机数组E、预设载体数据B确定第二字节数组F,每个随机数组E与一个第二字节数组F对应。
进一步,可以根据随机数组E中的随机数,在预设载体数据B中确定载体数值。可以将随机数作为索引,找到与随机数对应的载体数值。例如,随机数是15,则找到预设载体数据中第16个数值。载体数据B中的第一个数值标号可以是0,因此,标号为15的数值实际上在预设载体数据B中是第16个数值。
实际应用时,可以获取载体数值的最低k位数值,并将其作为第二字节数组F中的数值。每个随机数组E中包括n个随机数,因此,针对每个随机数组E可以得到n个载体数值,并得到n个载体数值的最低k位数值,随机数组E对应的n个载体数值的最低k位数值构成第二字节数组F。
其中,若预设载体数据B不是二进制形式,还可以将其转换为二进制形式,再获取其中的载体数值的最低k位数值。第二字节数组F中,可以将n个k位二进制数值转换为十进制,构成十进制数的数组。
具体地,由于共产生q个随机数组E,因此,能够得到q个第二字节数组F,且每个随机数组E、每个第二字节数组F中都包括n个数值。
步骤101-102与步骤103-104不进行限制,可以预先根据L、k值确定n值,在实际应用过程中,可以先执行步骤101-102,也可以先执行步骤103-104,还可以同时执行步骤101-102和103-104。
步骤105,根据第一字节数组D、第二字节数组F确定目标随机数组E、目标字节数组D。
进一步,对载体数据进行修改时,若更改后载体数据发生的变化较多,则容易被察觉,因此,可以根据第一字节数组D、第二字节数组F,确定出适合被嵌入的字节数组D,以及适合被更改的载体数据位置,也就是目标随机数组E。
实际应用时,第一字节数组D中包括n个字节,这n个字节的二进制形式拼接起来,就是与其对应的字符串C,且每个字节为k位二进制数。而第二字节数组F中也包括n个字节,每个字节包括k位二进制数值,且每个字节是载体数据B中随机数对应位置的载体数值的最低k位数值。因此,可以将载体数据B中随机数对应位置的载体数值的最低k位数值替换为第一字节数组D中的n个字节,从而实现将隐藏信息嵌入载体数据B的效果。
其中,为了使隐藏的数据信息不易被察觉,可以选择差异更小的第一字节数组D、第二字节数组F的组合,并将第一字节数组D嵌入第二字节数组F对应的载体数据B的位置处。
具体的,可以计算第一字节数组D、第二字节数组F之间对应位置的差值的绝对值,即计算|F[i][x]-D[j][x]|,其中,F[i][x]代表第i个第二字节数组F中的第x个数值,D[j][x]代表第j个第一字节数组D中的第x个数值,x为从0到n-1的值。并针对每个i、j的组合,计算出n个绝对值,再计算这n个绝对值之和,从而得到第一字节数组D、第二字节数组F之间的差异,将差异最小的组合,作为目标组合。
进一步,将目标组合中的第一字节数组D确定为目标字节数组D,将目标组合中的第二字节数组F对应的随机数组E确定为目标随机数组E。
步骤106,根据目标随机数组E将目标字节数组D嵌入载体数据B中。
实际应用时,根据目标随机数组E在载体数据B中确定嵌入位置,例如,目标随机数组E中第一个数字为15,因为第一个数字的标号可以是0,所以目标字节数组D中的第一个数字嵌入载体数据B的第16个数字中。
其中,可以将目标字节数组D中的每个字节转换为二进制形式,则能够得到n个k位二进制数,再将这些二进制数嵌入载体数据B的目标随机数位置数字的最低k位中,从而完成信息的嵌入。
具体的,载体数据B的目标随机数位置对应的数值,其中最低k位与目标字节数组D中的数值差异不大,因此,这种隐藏信息的方法不易被察觉。同时,载体数据B中嵌入的位置序列是随机生成的,因此,这种隐藏方法也不易被检测到。
本实施例提供的方法用于将数据嵌入载体数据中,该方法由安装有本实施例提供的方法的设备执行,该设备通常以硬件和/或软件的方式来实现。
本实施例提供的信息隐藏方法,包括根据预设变换规则对隐藏数据A进行变换,得到2m个二进制的字符串C;其中,m为预设值;确定每个字符串C对应的第一字节数组D;其中,每个第一字节数组D包括n个字节;根据预设规则生成q个随机数组E,其中,每个随机数组E中包括n个随机数;根据随机数组E、预设载体数据B确定与每个随机数组E对应的第二字节数组F;根据第一字节数组D、第二字节数组F确定目标随机数组E、目标字节数组D;根据目标随机数组E将目标字节数组D嵌入载体数据B中。本实施例提供的方法中,将变换过的隐藏数据嵌入载体数据中,能够增强隐藏数据的保密性,同时,字符串C进行拆分,随机生成载体数据中的嵌入位置,再根据载体数据在嵌入位置的载体数值、拆分后的字符串C确定最终的目标随机数组E、目标字节数组D,从而找到不易被察觉的嵌入位置以及嵌入的字符串,并且随机生成嵌入位置,还使得不易被检测到载体数据内嵌入了其他数据,因此,本实施例提供的方法能够达到在载体数据中更好地隐藏数据的目的。
图2为本发明另一示例性实施例示出的信息隐藏方法的流程图。
如图2所示,本实施例提供的信息隐藏方法包括:
步骤201,根据预设值m、j确定参数t;其中,j是隐藏数据A中数字的索引号。
其中,m值是预先设置的值。
具体的,隐藏数据A是一串二进制数值。若需要隐藏的数据本身不是二进制数值,则可以对其进行转换,得到二进制形式的隐藏数据A。
进一步,j是隐藏数据A中数字的索引号,若隐藏数据A中共包括25个二进制数值,则j的取值为0-24。本实施例中,数字串的索引号从0开始计算。
实际应用时,可以确定j除以m得到的余数,并将余数确定为参数t,即令t=(j modm)。例如,预设值m为2,当j等于0时,t等于0,当j等于1时,t等于1。
步骤202,确定字符串索引号i的第t位是否为0,若是,则C[i,j]=A[j],否则,C[i,j]=~A[j]。
其中,i为字符串C的索引号,例如第1个字符串C的索引号为0,第2个字符串C的索引号为1。本实施例中,根据隐藏数据A共转换得到2m个字符串C,因此,字符串索引号i的取值为0-(2m-1)。“~”为取反符号。
具体的,可以将字符串索引号i转换为m位的二进制形式,例如,m等于2时,字符串索引号i的取值分别为0、1、2、3,相应的二进制形式为00、01、10、11。
进一步,当j不变时,参数t值也不会改变。因此,可以确定每个j值对应的C[i,j]。例如,当j=2时,t=0。可以获取字符串索引号i的第0位数值是否为0,索引号i的第0位为对应二进制数值的最低位。当i等于0、2时,第0位数值为0,当i等于1、3时,第0位不是0,因此,C[0,2]=A[2]、C[1,2]=~A[2]、C[2,2]=A[2]、C[3,2]=~A[2]。根据本实施例提供的方式能够得到j=2对应的C[i,j]。相应的,还可以确定j等于其他值时对应的C[i,j],从而能够得到2m个二进制的字符串C。
假设隐藏数据A为:
1 0 1 0 1 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0
假设预设m=2,基于上述方式能够得到A对应的4个字符串C,分别为:
C[0]:1 0 1 0 1 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0
C[1]:0 0 0 0 0 0 1 0 1 1 0 1 1 0 1 1 1 0 1 0
C[2]:1 1 1 1 1 1 0 1 0 0 1 0 0 1 0 0 0 1 0 1
C[3]:0 1 0 1 0 1 1 1 1 0 0 0 1 1 1 0 1 1 1 1
步骤203,将字符串C中的每k位作为一个字节,得到n个字节。
其中,可以预先设置k值,并基于k对字符串C进行分组,并将每组作为一个字节,例如,可以设置k=4,上述字符串C的长度L=20,因此,能够得到5个字节。若L不是k的整数倍,则计算L除以k的商,并将商加1作为n值。
具体的,如上述确定的字符串C,对其进行分组后如下所示:
C[0]:1010 1000 0111 0001 0000
C[1]:0000 0010 1101 1011 1010
C[2]:1111 1101 0010 0100 0101
C[3]:0101 0111 1000 1110 1111
步骤204,将每个字节转换为十进制数,得到包括n个十进制数的第一字节数组D。
其中,可以将每个字符串C中包括的每个字节都转换为十进制数,从而得到每个字符串C对应的第一字节数组D。
如上所述的4个字符串C对应的第一字节数组D分别是:
步骤205,根据预设规则生成q个随机数组E,其中,每个随机数组E中包括n个随机数。
步骤205与步骤103的具体原理和实现方式类似,此处不再赘述。
步骤206,根据随机数组E中包括的随机数,在载体数据B中确定相应的载体数值。
其中,载体数据B可以是预先设置的希望将隐藏数据嵌入的数据,可以是图片、视频、音频等多媒体数据。可以将该数据以二进制、十进制、十六进制等多种形式进行表示。
具体的,假设以十六进制的方式表示载体数据B,该载体数据B的长度是40,则可以将载体数据B表示为:
假设q值为5,步骤205中采用线性同余法构造随机数组。其中,基于线性同余法得到的初始参数(a,b,x[0])分别为(14,9,7)、(17,1,36)、(20,9,26)、(18,15,6)、(17,36,35)。基于每个初始参数,生成的随机数组E分别为:
可以根据上述随机数组在载体数据B中确定相应的载体数值,例如,随机数为27时,对应的载体数值为18。根据上述随机数能够得到每组随机数对应的载体数值。
步骤207,从低到高位获取二进制的载体数值的k位数字,并将k位数字作为一个字节,将每个字节转换为十进制数值,得到第二字节数组F。
如上所述,载体数值为十六进制的形式,因此,还可以将载体数值转换为二进制,当然也可以将载体数据均转换为二进制的形式。
可以以从低到高的顺序,获取载体数值的k位数字。例如,载体数值为1010111000,k=4,则获取的数字为1000。
步骤205中生成的每个随机数组E中,都包括n个数值,也就是生成了n个随机数,因此,针对每个随机数组E来说,能够获取n个随机数值,并得到n个k位数字构成的字节。可以将每个字节转换为十进制数值,从而构成该随机数组E对应的第二字节数组F。
如上述举例产生的5随机数组E以及载体数据B,能够得到如下所述的第二字节数组F:
步骤201-204与步骤205-207的时序不做限制。
步骤208,根据第一字节数组D、第二字节数组F确定矩阵H。
其中,为了使隐藏的数据信息不易被察觉,可以选择差异更小的第一字节数组D、第二字节数组F的组合,将载体数据B中的最低k位数字,也就是第二字节数组F的值替换为第一字节数组D。
具体的,可以确定第一字节数组D与第二字节数组F间的距离,距离越小,则二者差异越小。还可以将每个第一字节数组D与每个第二字节数组F间的距离用矩阵H表示,例如,矩阵中的值:
其中,H[i,j]表示矩阵中第i行、第j列的值,也就是第i个字节数组F与第j个字节数组D之间的距离。x的取值范围是0到(n-1),用于表示字节数组中数值的索引,F[i][x]就表示第i个字节数组F中索引为x的数值。
具体的,由于每个字节数组中都包括n个数值,因此,需要计算相同索引号对应的数值差值,再计算各个差值之和,得到两个字节数组间的距离。
如上所述的例子中,根据上式能够计算得到矩阵H为:
步骤209,在矩阵H中确定最小值,根据最小值在矩阵H中的位置确定目标随机数组E、目标字节数组D。
由于矩阵H中的值是第一字节数组D与第二字节数组F间的距离,因此,H中最小数值对应的第一字节数组D与第二字节数组F间的差异最小。
假设矩阵H中的H[i,j]最小,而
因此,F[i]、D[j]间的差异最小。
如上述矩阵中所示,H[3,1]=16,是矩阵H中最小的值,因此,第二字节数组F[3]、第一字节数组D[1]间的差异较小。
可以将第一字节数组D[1]确定为目标字节数组D,并将这组字节嵌入载体数据B中。第二字节数组F[3]对应的随机数组为E[3],因此,将随机数组为E[3]确定为目标随机数组E。
实际应用时,目标随机数组E中包括n个随机数,将这些随机数作为索引,在载体数据B中确定出n个载体数值,这n个载体数值最低k位的字节组合,与目标字节组D的字节组合相差较小,因此,可以将这n个载体数值最低k位的字节替换为目标字节组D中的字节,从而避免隐藏数据被察觉到。同时,基于随机数列确定隐藏位置,还能够进一步避免隐藏数据被检测到。
步骤210,根据目标随机数组E将目标字节数组D嵌入载体数据B中。
步骤210与步骤105的实现原理相似,不再赘述。
如上述例子中,隐藏了数据信息的载体数据B变为:
其中,确定的目标随机数组E为E[3],包括随机数3、29、17、1、33。这些随机数作为索引,在原始载体数据B中对应的载体数值分别为:b2、96、8f、77、2e。
再将目标字节数组D分别嵌入上述载体数值中,可以按照随机数与目标字节数组D中的对应顺序,将目标字节数组D中的字节嵌入载体数值中,即目标字节数组中的第一个字节嵌入目标随机数组E中第一个随机数对应的载体数值中,具体的对应关系为:
0嵌入b2中,2嵌入96中,13嵌入8f中,11嵌入77中,10嵌入2e中。
以0嵌入b2为例,具体解释如何将目标字节数组D嵌入载体数据中。
本实施例中k值为4,因此,将0转换为4位的二进制形式0000,将b2转换为二进制形式10110010,将b2的最低4位替换为0000,即转换为10110000,转换为十六进制为b0。从而将隐藏数据A的变换形式嵌入载体数据B中。
实际应用时,在通信时,除了将嵌入隐藏信息的载体数据发送给接收方,还要将信息隐写的参数信息发送给接收方,以使接收方能够对载体数据进行解密,获取其中的隐藏信息。信息隐写的参数信息包括预设k值、m值、嵌入第一字节组D的索引信息,上述例子中该索引为1,若采用线性同余法构造随机数组,则还可以将生成目标随机序列E的初始化参数发送给接收方,上述例子中,E[3]对应的初始化参数(a,b,x[0])为(18,15,6)。若采用其他方式生成随机数组,则可以将生成随机数组使用的原始参数发送给接收方。还可以将数值n也发送给接收方,也可以由接收方根据其他信息自行确定。
发送参数信息可以通过将参数信息附在载体数据后发送,也可以通过其他安全信道进行传输。系统参数k值和m值若在通信双方之间事先约定,从而在通信时不需要传输。示例中,假定k=4和m=2事先已约定,发送方只需要把目标字节组D的索引为1、目标随机数组对应的随机数生成器的初始化参数值发送给接收方。
进一步,当通信的接收方接收到嵌入了隐藏信息的载体数据,以及信息隐写的参数信息后,可以从载体数据中提取出隐藏信息。示例中,接收到的载体数据为大小为S=40字节的二进制数据块B’,隐藏信息中,目标字节组D的标识1,目标随机数组对应的随机数生成器的初始化参数值为(18,15,6),隐藏字节数n=5。隐藏信息的提取步骤为:
首先,根据接收到的伪随机数生成器的初始化参数值,按照信息隐写时的相同方法产生一个长度为n的整数序列G。G[j]为第j个整数,满足0≤G[j]≤S-1。示例中,伪随机数生成器采用线性同余法,初始化参数值(a,b,x[0])=(18,15,6),根据前述的方法可产生整数序列G=(3,29,17,1,33)。
其次,将G中的整数作为索引,从载体数据B’中获得一个长度为n的字节数组R,且每个字节只取最低k位。即令R[j]=lowk(B’[G[j]]),这里lowk(z)表示取字节z的最低k位。将R的每个字节的最低k位拼接起来,得到一个长度为L的二进制位串W,这里L=n*k。示例中,由整数序列G得到的字节数组R=(0,2,13,11,10),这里每个字节用十进制整数表示。将R每个字节的最低k位拼接起来,得到二进制位串W=(0 0 0 0 0 0 1 0 1 1 0 1 1 0 1 11 0 1 0)。
第三,根据隐藏信息变换参数y,对二进制位串W进行变换,得到原始数据A。变换方法与信息隐写时相同,即对j=0,…,L-1,令t=(j mod m)。若目标字节组D的标识的第t位为0,则A[j]=W[j],否则令A[j]=~W[j],这里“~”表示二进制位的取反操作。变换得到的A就是用户需要的隐藏信息。示例中,目标字节组D的标识为1,相应的变换结果为A=(1 0 10 1 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0),这就是提取得到的原始隐藏信息。
图3为本发明一示例性实施例示出的信息隐藏装置的结构图。
如图3所示,本实施例提供的信息隐藏装置,包括:
变换模块31,用于根据预设变换规则对隐藏数据A进行变换,得到2m个二进制的字符串C;其中,m为预设值;
第一确定模块32,用于确定每个所述字符串C对应的第一字节数组D;其中,每个所述第一字节数组D中包括n个字节;
生成模块33,用于根据预设规则生成q个随机数组E,其中,每个所述随机数组E中包括n个随机数;
第二确定模块34,用于根据所述随机数组E、预设载体数据B确定与每个所述随机数组E对应的第二字节数组F;
目标确定模块35,用于根据第一字节数组D、第二字节数组F确定目标随机数组E、目标字节数组D;
嵌入模块36,用于根据所述目标随机数组E将所述目标字节数组D嵌入所述载体数据B中。
变换模块31、第一确定模块32依次连接,生成模块33、第二确定模块34依次连接,第一确定模块32、第二确定模块34分别与目标确定模块35连接,目标确定模块35与嵌入模块36连接。
本实施例提供的信息隐藏装置,包括变换模块,用于根据预设变换规则对隐藏数据A进行变换,得到2m个二进制的字符串C;其中,m为预设值;第一确定模块,用于确定每个字符串C对应的第一字节数组D;其中,每个第一字节数组D中包括n个字节;生成模块,用于根据预设规则生成q个随机数组E,其中,每个随机数组E中包括n个随机数;第二确定模块,用于根据随机数组E、预设载体数据B确定与每个随机数组E对应的第二字节数组F;目标确定模块,用于根据第一字节数组D、第二字节数组F确定目标随机数组E、目标字节数组D;嵌入模块,用于根据目标随机数组E将目标字节数组D嵌入载体数据B中。本实施例提供的装置中,将变换过的隐藏数据嵌入载体数据中,能够增强隐藏数据的保密性,同时,字符串C进行拆分,随机生成载体数据中的嵌入位置,再根据载体数据在嵌入位置的载体数值、拆分后的字符串C确定最终的目标随机数组E、目标字节数组D,从而找到不易被察觉的嵌入位置以及嵌入的字符串,并且随机生成嵌入位置,还使得不易被检测到载体数据内嵌入了其他数据,因此,本实施例提供的装置能够达到在载体数据中更好地隐藏数据的目的。
本实施例提供的信息隐藏装置的具体原理和实现方式均与图1所示的实施例类似,此处不再赘述。
图4为本发明另一示例性实施例示出的信息隐藏装置的结构图。
如图4所示,在上述实施例的基础上,本实施例提供的信息隐藏装置,所述变换模块31,包括:
参数确定单元311,用于根据m、j确定参数t;其中,j是所述隐藏数据A中数字的索引号;
索引号确定单元312,用于确定字符串索引号i的第t位是否为0,若是,则C[i,j]=A[j],否则,C[i,j]=~A[j]。
所述参数确定单元311具体用于:
确定j除以m得到的余数,并将所述余数确定为所述参数t。
所述第一确定模块32,包括:
分组单元321,用于将所述字符串C中的每k位作为一个字节,得到n个字节;
第一字节数组确定单元322,用于将每个字节转换为十进制数,得到包括n个十进制数的所述第一字节数组D。
所述第二确定模块34,包括:
载体数值确定单元341,用于根据所述随机数组E中包括的随机数,在所述载体数据B中确定相应的载体数值;
第二字节数组确定单元342,用于从低到高位获取二进制的所述载体数值的k位数字,并将所述k位数字作为一个字节,将每个所述字节转换为十进制数值,得到所述第二字节数组F。
所述目标确定模块35,包括:
矩阵确定单元351,用于根据所述第一字节数组D、所述第二字节数组F确定矩阵H;
目标确定单元352,用于在所述矩阵H中确定最小值,根据所述最小值在所述矩阵H中的位置确定目标随机数组E、目标字节数组D。
本实施例提供的信息隐藏装置的具体原理和实现方式均与图2所示的实施例类似,此处不再赘述。
图5为本发明一示例性实施例示出的信息隐藏设备的结构图。
如图5所示,本实施例提供的信息隐藏设备包括:
存储器51;
处理器52;以及
计算机程序;
其中,所述计算机程序存储在所述存储器51中,并配置为由所述处理器52执行以实现如上所述的任一种信息隐藏方法。
本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,
所述计算机程序被处理器执行以实现如上所述的任一种信息隐藏方法。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种信息隐藏方法,其特征在于,包括:
根据预设变换规则对隐藏数据A进行变换,得到2m个二进制的字符串C;其中,m为预设值;
确定每个所述字符串C对应的第一字节数组D;其中,每个所述第一字节数组D中包括n个字节;
根据预设规则生成q个随机数组E,其中,每个所述随机数组E中包括n个随机数;
根据所述随机数组E、预设载体数据B确定与每个所述随机数组E对应的第二字节数组F;
根据第一字节数组D、第二字节数组F确定目标随机数组E、目标字节数组D;
根据所述目标随机数组E将所述目标字节数组D嵌入所述载体数据B中。
2.根据权利要求1所述的方法,其特征在于,根据预设变换规则对隐藏数据A进行变换,得到2m个二进制的字符串C,包括:
根据m、j确定参数t;其中,j是所述隐藏数据A中数字的索引号;
确定字符串索引号i的第t位是否为0,若是,则C[i,j]=A[j],否则,C[i,j]=~A[j]。
3.根据权利要求2所述的方法,其特征在于,所述根据预设值m、j确定参数t,包括:
确定j除以m得到的余数,并将所述余数确定为所述参数t。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述确定每个所述字符串C对应的第一字节数组D,包括:
将所述字符串C中的每k位作为一个字节,得到n个字节;
将每个字节转换为十进制数,得到包括n个十进制数的所述第一字节数组D。
5.根据权利要求4所述的方法,其特征在于,所述根据所述随机数组E、预设载体数据B确定与每个所述随机数组E对应的第二字节数组F,包括:
根据所述随机数组E中包括的随机数,在所述载体数据B中确定相应的载体数值;
从低到高位获取二进制的所述载体数值的k位数字,并将所述k位数字作为一个字节,将每个所述字节转换为十进制数值,得到所述第二字节数组F。
6.根据权利要求1-3任一项所述的方法,其特征在于,所述根据第一字节数组D、第二字节数组F确定目标随机数组E、目标字节数组D,包括:
根据所述第一字节数组D、所述第二字节数组F确定矩阵H;
在所述矩阵H中确定最小值,根据所述最小值在所述矩阵H中的位置确定目标随机数组E、目标字节数组D。
7.一种信息隐藏装置,其特征在于,包括:
变换模块,用于根据预设变换规则对隐藏数据A进行变换,得到2m个二进制的字符串C;其中,m为预设值;
第一确定模块,用于确定每个所述字符串C对应的第一字节数组D;其中,每个所述第一字节数组D中包括n个字节;
生成模块,用于根据预设规则生成q个随机数组E,其中,每个所述随机数组E中包括n个随机数;
第二确定模块,用于根据所述随机数组E、预设载体数据B确定与每个所述随机数组E对应的第二字节数组F;
目标确定模块,用于根据第一字节数组D、第二字节数组F确定目标随机数组E、目标字节数组D;
嵌入模块,用于根据所述目标随机数组E将所述目标字节数组D嵌入所述载体数据B中。
8.根据权利要求7所述的装置,其特征在于,所述变换模块,包括:
参数确定单元,用于根据m、j确定参数t;其中,j是所述隐藏数据A中数字的索引号;
索引号确定单元,用于确定字符串索引号i的第t位是否为0,若是,则C[i,j]=A[j],否则,C[i,j]=~A[j]。
9.一种信息隐藏设备,其特征在于,包括:
存储器;
处理器;以及
计算机程序;
其中,所述计算机程序存储在所述存储器中,并配置为由所述处理器执行以实现如权利要求1-6任一种所述的方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,
所述计算机程序被处理器执行以实现如权利要求1-6任一种所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810971306.XA CN109325367B (zh) | 2018-08-24 | 2018-08-24 | 信息隐藏方法、装置、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810971306.XA CN109325367B (zh) | 2018-08-24 | 2018-08-24 | 信息隐藏方法、装置、设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109325367A true CN109325367A (zh) | 2019-02-12 |
CN109325367B CN109325367B (zh) | 2020-07-14 |
Family
ID=65264263
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810971306.XA Active CN109325367B (zh) | 2018-08-24 | 2018-08-24 | 信息隐藏方法、装置、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109325367B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110111477A (zh) * | 2019-04-23 | 2019-08-09 | 湖北工业大学 | 一种基于信息隐藏的彩票信息防伪认证方法及系统 |
CN110516775A (zh) * | 2019-07-11 | 2019-11-29 | 西安邮电大学 | 基于qr码用户秘密信息隐藏方法 |
CN112055217A (zh) * | 2020-07-27 | 2020-12-08 | 西安空间无线电技术研究所 | 任意字节数据中无损搭载信息的方法 |
CN113283215A (zh) * | 2021-07-15 | 2021-08-20 | 北京华云安信息技术有限公司 | 一种基于utf-32编码的数据混淆方法及装置 |
CN115952175A (zh) * | 2023-03-14 | 2023-04-11 | 乐山师范学院 | 一种数据库索引构建方法、装置、计算机设备及存储介质 |
CN116243887A (zh) * | 2022-12-06 | 2023-06-09 | 北京海泰方圆科技股份有限公司 | 软件随机数生成方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6556688B1 (en) * | 1999-03-15 | 2003-04-29 | Seiko Epson Corporation | Watermarking with random zero-mean patches for printer tracking |
CN102938888A (zh) * | 2012-10-31 | 2013-02-20 | 华南理工大学 | 适用于无线通信环境的秘密文件隐写与提取方法 |
CN105825257A (zh) * | 2016-03-09 | 2016-08-03 | 东北大学 | 基于二维条码的信息隐藏与隐藏信息提取方法及系统 |
CN106254074A (zh) * | 2016-08-12 | 2016-12-21 | 南京航空航天大学 | 一种基于混合加密的宋词载体文本信息隐藏技术 |
CN108242040A (zh) * | 2016-12-26 | 2018-07-03 | 天津职业技术师范大学 | 基于混沌系统的随机位盲水印实现方法 |
-
2018
- 2018-08-24 CN CN201810971306.XA patent/CN109325367B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6556688B1 (en) * | 1999-03-15 | 2003-04-29 | Seiko Epson Corporation | Watermarking with random zero-mean patches for printer tracking |
CN102938888A (zh) * | 2012-10-31 | 2013-02-20 | 华南理工大学 | 适用于无线通信环境的秘密文件隐写与提取方法 |
CN105825257A (zh) * | 2016-03-09 | 2016-08-03 | 东北大学 | 基于二维条码的信息隐藏与隐藏信息提取方法及系统 |
CN106254074A (zh) * | 2016-08-12 | 2016-12-21 | 南京航空航天大学 | 一种基于混合加密的宋词载体文本信息隐藏技术 |
CN108242040A (zh) * | 2016-12-26 | 2018-07-03 | 天津职业技术师范大学 | 基于混沌系统的随机位盲水印实现方法 |
Non-Patent Citations (1)
Title |
---|
王现会: "基于JPEG图像的信息隐藏算法研究", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110111477A (zh) * | 2019-04-23 | 2019-08-09 | 湖北工业大学 | 一种基于信息隐藏的彩票信息防伪认证方法及系统 |
CN110516775A (zh) * | 2019-07-11 | 2019-11-29 | 西安邮电大学 | 基于qr码用户秘密信息隐藏方法 |
CN112055217A (zh) * | 2020-07-27 | 2020-12-08 | 西安空间无线电技术研究所 | 任意字节数据中无损搭载信息的方法 |
CN112055217B (zh) * | 2020-07-27 | 2022-05-24 | 西安空间无线电技术研究所 | 任意字节数据中无损搭载信息的方法 |
CN113283215A (zh) * | 2021-07-15 | 2021-08-20 | 北京华云安信息技术有限公司 | 一种基于utf-32编码的数据混淆方法及装置 |
CN116243887A (zh) * | 2022-12-06 | 2023-06-09 | 北京海泰方圆科技股份有限公司 | 软件随机数生成方法及装置 |
CN116243887B (zh) * | 2022-12-06 | 2023-11-14 | 北京海泰方圆科技股份有限公司 | 软件随机数生成方法及装置 |
CN115952175A (zh) * | 2023-03-14 | 2023-04-11 | 乐山师范学院 | 一种数据库索引构建方法、装置、计算机设备及存储介质 |
CN115952175B (zh) * | 2023-03-14 | 2023-05-30 | 乐山师范学院 | 一种数据库索引构建方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109325367B (zh) | 2020-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109325367A (zh) | 信息隐藏方法、装置、设备及计算机可读存储介质 | |
CN106254074A (zh) | 一种基于混合加密的宋词载体文本信息隐藏技术 | |
JP5121930B2 (ja) | 暗号値のテキスト表示を提供する方法 | |
CN110502910B (zh) | 一种基于数据加密的云端信息存储系统 | |
US11727524B2 (en) | System and method for encoding and authenticating a digital image | |
CN109493875A (zh) | 音频水印的添加、提取方法及终端设备 | |
CN101335616B (zh) | 一种具有无限密钥空间的对称加密方法 | |
CN115378693B (zh) | 一种用于纵向联邦学习数据对齐的隐匿集合求交方法 | |
CN115941189B (zh) | 一种用于文档数据的加密方法 | |
CN108418683A (zh) | 一种基于汉字结构特征的无载体文本隐写方法 | |
CN112016061A (zh) | 一种基于鲁棒水印技术的Excel文档数据保护方法 | |
CN115051798A (zh) | 一种随机数生成方法、装置、电子设备及存储介质 | |
CN102857514B (zh) | 基于http协议的秘密信息隐藏传输方法 | |
CN101923700B (zh) | 一种双效数字水印方法 | |
CN107070634B (zh) | 基于非交换单群的私钥无噪声全同态数据处理方法及装置 | |
CN104794243A (zh) | 基于文件名的第三方密文检索方法 | |
CN113255860A (zh) | 一种基于分层加密的商品防伪二维码生成方法 | |
Mukherjee et al. | Fibonacci based text hiding using image cryptography | |
CN102509058B (zh) | 基于冗余位替换的点类型gis矢量数据伪装与还原方法 | |
CN114943205A (zh) | 一种身份识别编码uuid生成方法、系统、存储介质及电子设备 | |
JP2006185096A (ja) | データ保護プログラムおよびデータ保護方法 | |
CN103294937A (zh) | 一种软件保护系统及其保护方法 | |
Majeed et al. | New Text Steganography Technique based on Multilayer Encoding with Format-Preserving Encryption and Huffman Coding | |
KR100477557B1 (ko) | 유리 베지에 곡선/곡면의 디지털 워터마크 방법 및 장치 | |
WO2015195142A1 (en) | System and method for encoding and authenticating a digital image |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |