发明内容
本发明提供一种信息加密保护方法,以解决现有的问题。
本发明的一种信息加密保护方法采用如下技术方案:
本发明一个实施例提供了一种信息加密保护方法,该方法包括以下步骤:
S1:将大小为第一预设尺寸的所有滤波核进行编号得到加密字典;
S2:获取待加密的二进制数据,将待加密的二进制数据转换为二值图像,得到多个实像素点;根据滤波核的个数以及待加密的二进制数据的长度获取滤波序列;将二值图像中左上角的实像素点作为编号为一的第一像素点;构建一个空的密文序列以及一个空的已加密像素点集合;
S3:对第一像素点进行加密操作,包括:
将第一像素点的第一序号的取值设置为第一像素点的编号,根据第一像素点的第一序号获得第一像素点的滤波核,根据第一像素点的滤波核获得二值图像中所有预估第二像素点,通过判断预估第二像素点是否在已加密像素点集合中获得第一像素点对应的所有第二像素点;对第一像素点的像素值与每个第二像素点的像素值进行异或操作,得到每个第二像素点对应的二进制数,将所有第二像素点对应的二进制数添加到密文序列中;将第一像素点与所有第二像素点添加到已加密像素点集合中;将距离第一像素点最近的且未添加到已加密像素点集合中的实像素点作为新的第一像素点,所述新的第一像素点的编号为所述第一像素点的编号加一;
S4:对新的第一像素点重复加密操作,直到所有实像素点均被添加到已加密像素点集合中时停止;将密文序列中的所有二进制数按照顺序拼接在一起得到密文数据。
优选的,所述将大小为第一预设尺寸的所有滤波核进行编号得到加密字典包括:
构建第一预设尺寸的矩阵,以矩阵左上角的位置为锚点,在矩阵其余位置随机选择第一预设值个位置作为第一位置,对第一位置填充1;将矩阵除第一位置与锚点之外的位置作为第二位置,对第二位置填充为0;填充后的矩阵作为滤波核;
获取所有可能的滤波核,对所有可能的滤波核进行随机编号,将所有可能的滤波核的编号结果作为加密字典。
优选的,所述将待加密的二进制数据转换为二值图像,得到多个实像素点包括:
根据待加密的二进制数据的长度构建一个空矩阵,将待加密的二进制数据的每个二进制位按照从左到右从上到下的顺序填入到空矩阵中,得到第一矩阵;对第一矩阵先向右扩充第二预设值列,再向下扩充第二预设值行,得到第二矩阵;对第二矩阵中空的位置随机填入
或
,得到二值图像;将二值图像中由待加密的二进制数据填充得到的像素点作为实像素点。
优选的,所述根据滤波核的个数以及待加密的二进制数据的长度获取滤波序列包括:
利用混沌映射的方法获取长度为待加密的二进制数据的长度的混沌序列,对混沌序列中每个元素分别乘以滤波核的个数并向上取整,得到滤波序列。
优选的,所述根据第一像素点的第一序号获得第一像素点的滤波核包括:
获取滤波序列中第一像素点的第一序号位置处的元素,作为第一像素点的滤波编号;将加密字典中所述滤波编号对应的滤波核作为第一像素点的滤波核。
优选的,所述根据第一像素点的滤波核获得二值图像中所有预估第二像素点包括:
获取二值图像中以第一像素点为左上角点的第一预设尺寸的窗口,将第一像素点的滤波核作为所述窗口的遮罩,获取所述滤波核中所有为1的位置在所述窗口中对应的像素点,作为预估第二像素点。
优选的,所述通过判断预估第二像素点是否在已加密像素点集合中获得第一像素点对应的所有第二像素点包括:
当第一像素点的第一序号为1时,将预估第二像素点作为第二像素点;
当第一像素点的第一序号不为1时,判断是否存在预估第二像素点位于已加密像素点集合中,若存在,则将所有预估第二像素点作为第二像素点;若不存在,重复如下迭代过程:将第一像素点的第一序号加一,重新根据第一像素点的第一序号获得第一像素点的滤波核,根据第一像素点的滤波核获得二值图像中所有预估第二像素点;直到存在预估第二像素点位于已加密像素点集合中时停止迭代,并将所有预估第二像素点作为第二像素点。
优选的,所述将所有第二像素点对应的二进制数添加到密文序列中包括:
按照从下到上从右到左的顺序,依次获取二值图像中每个第二像素点对应的二进制数,将所述二进制数添加到密文序列中。
本发明的有益效果是:构建滤波核,获取加密字典;获取待加密的二进制数据并转换为二值图像,得到实像素点;根据滤波核个数以及待加密的二进制数据的长度获取滤波序列;根据二值图像中实像素点链式获取第一像素点,根据滤波序列获取第一像素点的滤波核,进一步得到第二像素点;对第一像素点与每个第二像素点进行异或操作,得到密文。本发明通过为不同的第一像素点赋予不同的滤波核获取第二像素点,对第一像素点与所有第二像素点进行异或操作,选择性保存了待加密的二进制数据不同二进制位之间的关系,破坏了待加密的二进制数据原有的数据规律。同时通过链式获取第一像素点,使得密文具有较强的密钥敏感性,即改变加密字典中一个滤波编号就会导致密文变化非常大,可抵抗统计分析攻击;同时加密字典密钥空间大,可抵抗暴力破解攻击。
具体实施方式
为了更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的一种信息加密保护方法,其具体实施方式、结构、特征及其功效,详细说明如下。在下述说明中,不同的“一个实施例”或“另一个实施例”指的不一定是同一实施例。此外,一或多个实施例中的特定特征、结构或特点可由任何合适形式组合。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。
下面结合附图具体的说明本发明所提供的一种信息加密保护方法的具体方案。
请参阅图1,其示出了本发明一个实施例提供的一种信息加密保护方法的步骤流程图,该方法包括以下步骤:
101.构建滤波核,获取加密字典。
音频、图像、文本等数据信息在传输或存储时都需要转换为二进制数据。本发明实施例对二进制数据进行加密。本发明实施例通过将二进制数据转换为二值图像,对二值图像采用
大小的滤波核,选择性保存二值图像中像素点与周围
个像素点之间的关系达到加密的目的。
滤波核构建方法如下:
构建一个
大小的空矩阵,将空矩阵左上角的位置作为锚点,在其余位置中随机选择
个位置,将其填充为1。将除锚点之外的剩余位置填充为0,将填充之后的矩阵作为一个滤波核。除锚点外,滤波核中为1的位置表示所选择的位置,锚点对应的像素点需保存与此些位置上对应的像素点的关系;滤波核中为0的位置表示未被选择的位置,锚点对应的像素点无需保存与此些位置上对应的像素点的关系。因此,不考虑锚点的取值,滤波核共有
种情况。本发明实施例中
,
。在其他实施例中,实施人员可根据需要调整
和
的值。一种滤波核示意图参见图2。
对
种滤波核进行
到
的随机编号,则有
种情况。以其中一种情况作为加密字典,加密字典中一个滤波核对应一个编号,每个滤波核的编号均不相同。加密字典由加密端与解密端预先保存。
102.获取待加密的二进制数据以及滤波序列,将待加密的二进制数据转换为二值图像,得到实像素点。
数据存储或传输时需要转换为可存储传输的二进制数据。本方案基于二进制数据进行加密。利用序列化方法将数据转换为二进制数据,作为待加密的二进制数据。
待加密的二进制数据长度为
,构建一个
的空矩阵,将待加密的二进制数据按照从左到右从上到下的顺序填入到矩阵中。由于滤波核大小为
,对于矩阵中右侧
列,下侧
行中的位置,无法满足被滤波核覆盖。因此,将矩阵先向右扩充
列,再向下扩充
行,在扩充的位置随机填入
或
,得到一个
大小的矩阵,该矩阵即为
大小的二值图像。将二值图像中由待加密的二进制数据填充得到的像素点记作实像素点,将二值图像中随机填充得到的像素点记作虚像素点。其中
为向上取整符号。
至此,将待加密的二进制数据转换为了二值图像。
为增加密文数据的复杂性,可对待加密的二进制数据转换成的二值图像中的不同实像素点采用不同的滤波核进行加密,因此需要一个滤波序列。获取当前待加密的二进制数据的长度
,建立一个长度为
的滤波序列:
基于发送端与接收端事先约定的安全密钥,采用混沌映射的方法,获取一个长度为
的混沌序列,混沌序列范围为
,将混沌系列中每个数乘以
并进行向上取整,得到范围为
的长度为
的序列,该序列即为滤波序列。滤波基于混沌映射获得,数据非常混乱无规律性。依据该滤波序列进行加密所产生的密文复杂度高,可抵抗统计分析攻击及暴力破解攻击。
滤波序列在每次数据传输前,由加密端和解密端分别获取。
103.获取第一像素点,对第一像素点进行加密,得到密文。
构建一个空的密文序列,用来存放加密过程中产生的密文。构建一个空的已加密像素点集合用来存放加密过程中已进行加密的像素点。将二值图像中左上角第一个实像素点作为第一像素点,二值图像中左上角第一个实像素点为第一个第一像素点,即该第一像素点的编号为1。对第一像素点进行加密:
将第一像素点的编号
作为第一像素点的第一序号,获取滤波序列中第一序号位置处的元素,作为该第一像素点的滤波编号。在加密字典中查找该滤波编号对应的滤波核,该滤波核即为该第一像素点的滤波核。以第一像素点为左上角像素点构建一个
大小的窗口,以该第一像素点的滤波核作为该窗口的遮罩,选择滤波核中所有为
的位置在该窗口中对应的像素点,作为预估第二像素点。
当第一像素点的第一序号为1时,将所有预估第二像素点作为第二像素点。
需要说明的是,为第一像素点分配滤波核实际上是为了选择性保存第一像素点与周围像素点的关系,为便于后续解密,需链式的保存二值图像中所有实像素点之间的关系,因此需要对除第一个第一像素点之外的所有第一像素点进行预估第二像素点判断操作,以确保最终获得第二像素点能够使得该第一像素点与前期已加密像素点关联起来,从而使得最终加密之后的所有实像素点都可关联起来。
在本实施例中,当第一像素点的第一序号不为1时,判断是否存在预估第二像素点位于已加密像素点集合中,若存在,则将所有预估第二像素点作为第二像素点;若不存在,则将第一序号加一,根据第一序号重复获取预估第二像素点,直到存在预估第二像素点位于已加密像素点集合中时停止。
至此,获得了第二像素点。
对第一像素点与每个第二像素点的像素值分别进行异或操作,即第一像素点与第二像素点的像素值相同时记
,不同时记
。由于滤波核中为
的位置共有
个,所以通过异或操作可得到
个
位二进制数,此些二进制数即为该第一像素点与所有第二像素点的加密结果,每个第二像素点对应一个二进制数。按照从下到上从右到左的顺序,获取二值图像中所有第二像素点对应的二进制数,依次将此
个
位二进制数添加到密文序列的末尾。将第一像素点与所有第二像素点添加到已加密像素点集合中。将距离第一像素点最近的且还未添加到已加密像素点集合中的实像素点作为新的第一像素点,新的第一像素点的编号为
,其中
为当前第一像素点的编号。
重复对新的第一像素点进行加密操作直到二值图像中所有实像素点均已添加到已加密像素点集合中时停止。
将最终得到的密文序列中的二进制数按照顺序拼接,得到密文。至此,完成了待加密的二进制数据的加密。通过对不同的第一像素点的窗口应用不同的滤波核,来选择性保存第一像素点与周围像素点之间的关系,使得密文的复杂性增加,同时通过预估第二像素点判断操作使得加密之后的所有实像素点都可关联起来,但又破坏了明文中原有的数据规律,可抵抗统计分析攻击。同时,加密字典密钥空间大,可抵抗暴力破解攻击。
104.对密文进行传输并解密。
发送端将待加密的二进制数据的长度
以及待加密的二进制数据中第一个比特位的值
与密文一起传输至接收端。
接收端接收到将待加密的二进制数据的长度
以及待加密的二进制数据中第一个比特位的值
与密文信息后,根据将待加密的二进制数据的长度
以及待加密的二进制数据中第一个比特位的值
对密文进行解密:
将密文数据按照每
位分为一组。则每组密文为每个第一像素点与其对应的第二像素点的加密结果。
根据待加密的二进制数据的长度
,构建一个
大小的空矩阵。该矩阵用来还原加密过程中的二值图像。设加密过程中的二值图像第一个像素点的值为
,将
填入矩阵左上角第一个位置。构建一个空的已解密像素点集合,用来存放解密过程中的已解密的像素点。
将矩阵左上角第一个位置作为第一个第一像素点,因此该第一像素点的编号为
。由于该第一像素点的值为
,为已解密像素点,因此将其加入到已解密像素点集合中。
根据第一像素点进行解密操作:
将第一像素点的编号作为第一像素点的第一序号,获取滤波序列中第一序号位置处的元素,作为该第一像素点的滤波编号。在加密字典中查找该滤波编号对应的滤波核,该滤波核即为该第一像素点的滤波核。以第一像素点为左上角像素点构建一个
大小的窗口,以该第一像素点的滤波核作为该窗口的遮罩,选择滤波核中所有为
的位置在该窗口中对应的像素点,作为预估第二像素点。
当第一像素点的第一序号为1时,将所有预估第二像素点作为第二像素点。
当第一像素点序号不为1时,判断是否存在预估第二像素点位于已解密像素点集合中,若存在,则将所有预估第二像素点作为第二像素点;若不存在,则将第一序号加一,根据第一序号重复获取预估第二像素点,直到存在预估第二像素点位于已解密像素点集合中时停止。
至此,获得了第二像素点。
每组密文为第一像素点与每个第二像素点的像素值分别进行异或操作的结果,即当第一像素点与第二像素点的像素值相同时,对应的密文为
,不同时对应的密文为
。根据第一像素点的序号,获取对应的密文,如第
个第一像素点对应第
组密文。
按照从下到上从右到左的顺序,获取矩阵中的第二像素点,将对应的密文中每个比特位依次分配给每个第二像素点,作为第二像素点的标志位。根据标志位对所有第二像素点以及第一像素点进行分类,将第一像素点以及标志位为0的所有第二像素点划分为一个类别,将标志位为1的所有第二像素点划分为一个类别。每一个类别中的像素点的像素值相同,不同类别的像素点的像素值不同。至少存在一个类别中一个像素点位于已解密像素点集合中,根据该像素点的像素值,获取该类别的所有像素点的像素值以及另外一个类别中所有像素点的像素值,将第一像素点以及所有第二像素点的像素值填入到矩阵中。例如一个类别中一个像素点位于已解密像素点集合,且该像素点的像素值为
时,该类别的所有像素点的像素值都为
,另外一个类别中所有像素点的像素值记为
;该像素点的像素值为
时,该类别的所有像素点的像素值都为
,另外一个类别中所有像素点的像素值为
。
将第一像素点与所有第二像素点添加到已解密像素点集合中。将距离第一像素点最近的且还未添加到已解密像素点集合中的实像素点作为新的第一像素点,新的第一像素点的编号为当前第一像素点的编号加一。
重复对新的第一像素点进行解密操作直到二值图像中所有实像素点均已添加到已解密像素点集合中时停止。
如此,得到了一个包含
和
的矩阵。根据待加密的二进制数据中第一个比特位的值
,可得知所有的
,由于二进制数仅包含
和
,则可得到
的值,当
时,
,
;当
时,
,
。使用
、
替换矩阵中的
、
,得到的结果作为一个二值图像。
二值图像中第
至
行以及
至
列为加密过程中扩充得到的,将此些行和列删除,得到
大小的二值图像,将该二值图像中像素点的值按照从左上角像素点开始,按照从左到右从上到下的顺序展开成一维的二进制串,获取前
位的内容,结果即为待加密的二进制数据。
将待加密的二进制数据进行反序列化,得到原始数据。至此,完成了数据的解密。
本发明实施例通过构建滤波核,获取加密字典;获取待加密的二进制数据并转换为二值图像,得到实像素点;根据滤波核个数以及待加密的二进制数据的长度获取滤波序列;根据二值图像中实像素点链式获取第一像素点,根据滤波序列获取第一像素点的滤波核,进一步得到第二像素点;对第一像素点与每个第二像素点进行异或操作,得到密文。本发明通过为不同的第一像素点赋予不同的滤波核获取第二像素点,对第一像素点与所有第二像素点进行异或操作,选择性保存了待加密的二进制数据不同二进制位之间的关系,破坏了待加密的二进制数据原有的数据规律。同时通过链式获取第一像素点,使得密文具有较强的密钥敏感性,即改变加密字典中一个滤波编号就会导致密文变化非常大,可抵抗统计分析攻击;同时加密字典密钥空间大,可抵抗暴力破解攻击。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。