一种基于不重复密钥对字符进行伪装、解伪装的方法与流程

文档序号:13590901阅读:283来源:国知局

本发明属于信息安全技术领域,涉及一种数据伪装、解伪装的方法,尤其涉及一种基于不重复密钥对字符进行伪装、解伪装的方法。



背景技术:

随着计算机网络、计算机信息及计算机技术的高速发展,信息的安全性和保密性已经越来越多地受到人们的高度重视。数据加密技术是一种应用较为广泛、效果较为理想的信息安全技术,而数据伪装在本质上也是一种数据加密技术,其不同之处在于,明文字符的伪装是将明文以一定的方式进行加密或者变换之后,仍以可读的形式展现在用户的面前,这样使得普通用户无法区分数据是否为伪装数据,使得数据更加具有迷惑性。

现有技术中,传统的加密方法由于其规律性,很容易被破译,又如传统的rsa和des数据加密算法,由于其算法复杂或安全性问题,也需要一种简单、高效、不易破译的伪装算法;此外,现有技术中还没有对明文字符进行伪装的技术方案。



技术实现要素:

本发明针对现有技术的不足和上述问题,提出了一种基于不重复密钥对字符进行伪装的方法,通过查找并生成字符的unicode编码并将其转换为hex编码,对hex编码进行拆分和变换,生成明文字符的伪装字符,达到伪装字符的目的;通过本发明提出的方法,伪装后的字符仍以可读的形式展现在用户的面前,这样使得普通用户无法区分字符是否为伪装字符,使得数据更加具有迷惑性;此外,通过本发明提出的方法,解决了现有技术中尚无对明文进行伪装的技术方案的问题;所述方法包括以下步骤:

s100:载入明文;

s200:构建密钥字典,包括以下步骤:

s201:将密钥字符以16个字符为一行且16个字符为一列,形成16*16的密钥字符矩阵;

s202:将各个所述密钥字符矩阵顺序编号为密钥块号n,其中,n为大于或等于0的整数;

s300:确定所述密钥块号:随机选取所述密钥块号n,确定所对应的所述密钥字符矩阵为所用密钥;

s400:生成明文字符的unicode编码;

s500:将所述unicode编码转换为4字节hex编码0xyyhh,其中,所述hex编码不足4字节时,以0填充低字节;

s600:利用所述hex编码对所述明文字符进行伪装并输出伪装字符,包括以下步骤:

s601:将4字节的所述hex编码0xyyhh拆分为低2字节0xyy和高2字节0xhh,其中,y、y、h、h均为十六进制数;

s602:获取低字节伪装字符:所述0xyy中,低字节0xy表示所述密钥块号n所对应的所述密钥字符矩阵的第y行,高字节0xy表示所述密钥块号n所对应的所述密钥字符矩阵的第y列,获取所述密钥字符矩阵的坐标位置(y,y)的字符为所述低字节伪装字符,所述密钥字符矩阵的行、列均以0开始计数;

s603:判断所述0xy除以2的余值是否为0,如果是,执行步骤s604,否则,执行步骤s605;

s604:获取所述密钥字符矩阵的坐标位置(y,y)及(y,y+1)的字符为所述低字节伪装字符;

s605:获取高字节伪装字符:所述0xhh中,低字节0xh表示所述密钥块号n所对应的所述密钥字符矩阵的第h行,高字节0xh表示所述密钥块号n所对应的所述密钥字符矩阵的第h列,获取所述密钥字符矩阵的坐标位置(h,h)的字符为所述高字节伪装字符;

s606:判断所述0xh除以2的余值是否为0,如果是,执行步骤s607,否则,执行步骤s608;

s607:获取所述密钥字符矩阵的坐标位置(h,h)及(h,h+1)的字符为所述高字节伪装字符;

s608:输出所述明文字符的伪装字符:将所述低字节伪装字符和所述高字节伪装字符顺序合并,输出所述明文字符的伪装字符;

s700:判断是否完成所有明文字符的伪装,如果是,执行步骤s800,否则,执行步骤s300。

s800:将所述明文字符的伪装字符顺序合并,输出伪装文。

优选地,所述密钥字典中的所述密钥字符为任意具有unicode编码的字符。

优选地,所述密钥字典中的所述密钥字符各不相同。

同时,本发明提供了一种基于不重复密钥对字符进行解伪装的方法,通过对伪装字符的逆向的过程和方法,进行解伪装并输出明文字符;所述方法包括以下步骤:

s001:载入伪装文;

s002:构建密钥字典,包括以下步骤:

s0021:将密钥字符以16个字符为一行且16个字符为一列,形成16*16的密钥字符矩阵;

s0022:将各个所述密钥字符矩阵顺序编号为密钥块号n,其中,n为大于或等于0的整数;

s003:顺序获取伪装字符;

s004:获取明文字符的hex编码,包括以下步骤:

s0041:确定所述伪装字符所在密钥块号n及在所述密钥块号n所对应的所述密钥字符矩阵的坐标位置(y,y),其中,y,y均为十六进制数;

s0042:判断所述坐标位置(y,y)中的列坐标的值y除以2的余值是否为0,如果是,执行步骤s0043,否则,执行步骤s0044;

s0043:输出低字节伪装字符的hex编码为0xyy,向后偏移2个伪装字符,获取到下一伪装字符,执行步骤s0045;

s0044:输出低字节伪装字符的hex编码为0xyy,获取下一伪装字符;

s0045:获取当前伪装字符在所述密钥块号n所对应的所述密钥字符矩阵的坐标位置(h,h),其中,h,h均为十六进制数;

s0046:判断所述坐标位置(h,h)中的列坐标的值h除以2的余值是否为0,如果是,执行步骤s0047,否则,执行步骤s0048;

s0047:输出高字节伪装字符的hex编码为0xhh,向后偏移2个伪装字符,获取到下一伪装字符,执行步骤s0049;

s0048:输出高字节伪装字符的hex编码为0xhh,获取下一伪装字符;

s0049:将所述低字节伪装字符的hex编码和所述高字节伪装字符的hex编码顺序合并为0xyyhh并输出作为所述明文字符的hex编码;

s005:将所述hex编码转换为unicode编码;

s006:生成所述unicode编码对应的明文字符;

s007:是否完成所有伪装字符的解伪装,如果是,执行步骤s008,否则,执行步骤s004;

s008:将所述明文字符顺序合并,输出明文。

优选地,所述密钥字典中的所述密钥字符为任意具有unicode编码的字符。

优选地,所述密钥字典中的所述密钥字符各不相同。

本发明的有益效果是:伪装后的字符仍以可读的形式展现在用户的面前,使得数据更加具有迷惑性;此外,通过本发明提出的方法,解决了现有技术中还没有对明文进行伪装的技术方案的问题。

附图说明

图1为本发明中对明文字符进行伪装的主流程图;

图2为本发明中实施例的密钥示意图;

图3为本发明中步骤s600的具体流程图;

图4为本发明中对伪装字符进行解伪装的主流程图;

图5为本发明中步骤s004的具体流程图。

具体实施方式

下面结合附图和实施例对本发明作进一步阐述。

因《千字文》所载字符各不相同,因此,本实施例中,选用《千字文》所载字符作为密钥字符。

如图1所示,一种基于不重复密钥对字符进行伪装的方法,包括以下步骤:

s100:载入明文:输入需要伪装的明文;

s200:构建密钥字典,包括以下步骤:

s201:将密钥字符以16个字符为一行且16个字符为一列,形成16*16的密钥字符矩阵:如图2所示,选用《千字文》所载字符作为密钥字符,由于《千字文》字符数为1000,按每个16*16的密钥字符矩阵进行分块,需要补充24个不同的字符来凑齐1024个字符,以满足256的整数倍,因此,本实施例中,将阿拉伯数字1至8、英文字母a至p共计24个不同的字符尾加至《千字文》所载字符后,将尾加后的所有字符分为4个16*16的密钥字符矩阵;

s202:如图2所示,将4个密钥字符矩阵顺序编号为密钥块号0,1,2,3,值得注意的是,编号以0开始计数;

s300:确定密钥块号:随机选取密钥块号,例如,选取密钥块号3,确定所对应的密钥字符矩阵为所用密钥;

s400:生成明文字符的unicode编码,本实施例中,以汉字字符“我”为例,查找并输入其unicode编码为25105;

s500:本实施例中,unicode编码25105转换为4字节的hex编码为0x6211,值得注意的是,当hex编码不足4字节时,以0填充hex编码的低字节,即,从hex编码至左向右填充0;

s600:利用hex编码0x6211对明文字符“我”进行伪装并输出伪装字符,包括如图3所示的以下步骤:

s601:本实施例中,将4字节的hex编码0x6211拆分为低2字节0x62和高2字节0x11;

s602:获取低字节伪装字符:低2字节0x62中,低字节0x6表示密钥块号3所对应的密钥字符矩阵的第6行,高字节0x2表示密钥块号3所对应的密钥字符矩阵的第2列,获取所述密钥字符矩阵的坐标位置(6,2)的字符“嗣”为低字节伪装字符,值得注意的是,密钥字符矩阵的行、列均以0开始计数;

s603:判断列坐标的值0x2除以2的余值是否为0,如果是,执行步骤s604,否则,执行步骤s605;本实施例中,列坐标的值0x2除以2的余值为0,执行步骤s604;

s604:本实施例中,获取密钥字符矩阵的坐标位置(6,2)及(6,3)的字符“嗣续”为低字节伪装字符;

s605:获取高字节伪装字符:本实施例中,高2字节0x11的低字节0x1表示密钥块号3所对应的密钥字符矩阵的第1行,高字节0x1表示密钥块号3所对应的密钥字符矩阵的第1列,获取密钥字符矩阵的坐标位置(1,1)的字符“读”为高字节伪装字符;

s606:判断列坐标的值0x1除以2的余值是否为0,如果是,执行步骤s607,否则,执行步骤s608;本实施例中,列坐标的值0x1除以2的余值不为0,执行步骤s608;

s607:获取密钥字符矩阵的坐标位置(1,1)及(1,2)的字符为高字节伪装字符,本实施例的情况下,不执行该步骤;

s608:输出明文字符的伪装字符:将低字节伪装字符“嗣续”和高字节伪装字符“读”顺序合并,输出明文字符“我”的伪装字符为“嗣续读”;

s700:判断是否完成所有明文字符的伪装,如果是,执行步骤s800,否则,执行步骤s300。

s800:将明文字符的伪装字符顺序合并,输出伪装文。

如图4所示,一种基于不重复密钥对字符进行解伪装的方法,包括以下步骤:

s001:载入伪装文:输入需要解伪装的伪装文;

s002:构建密钥字典,包括以下步骤:

s0021:将密钥字符以16个字符为一行且16个字符为一列,形成16*16的密钥字符矩阵;如图2所示,选用《千字文》所载字符作为密钥字符,由于《千字文》字符数为1000,按每个16*16的密钥字符矩阵进行分块,需要补充24个不同的字符来凑齐1024个字符,以满足256的整数倍,因此,本实施例中,将阿拉伯数字1至8、英文字母a至p共计24个不同的字符尾加至《千字文》所载字符后,将尾加后的字符分为4个16*16的密钥字符矩阵;

s0022:如图2所示,将4个密钥字符矩阵顺序编号为密钥块号0,1,2,3,值得注意的是,编号以0开始计数;

s003:顺序获取伪装字符,本实施例中,输入伪装字符“嗣续读”;

s004:获取明文字符的hex编码,包括如图5所示的以下步骤:

s0041:由于密钥字符各不相同,因此,可以确定第一个伪装字符“嗣”所在密钥块号为3,且在密钥块号3所对应的密钥字符矩阵的坐标位置为(6,2),值得注意的是,密钥字符矩阵的行、列均以0开始计数;

s0042:判断坐标位置(6,2)中的列坐标的值0x2除以2的余值是否为0,如果是,执行步骤s0043,否则,执行步骤s0044;本实施例中,列坐标的值0x2除以2的余值为0,执行步骤s0043;

s0043:输出低字节伪装字符的hex编码为0x62,向后偏移2个伪装字符,获取到下一伪装字符“读”,执行步骤s0045;

s0044:输出低字节伪装字符的hex编码为0x62,获取下一伪装字符;本实施例的情况下,不执行该步骤;

s0045:获取当前伪装字符在密钥块号3所对应的密钥字符矩阵的坐标位置(1,1);

s0046:判断坐标位置(1,1)中的列坐标的值0x1除以2的余值是否为0,如果是,执行步骤s0047,否则,执行步骤s0048;本实施例中,列坐标的值0x1除以2的余值不为0,执行步骤s0048;

s0047:输出高字节伪装字符的hex编码为0x11,向后偏移2个伪装字符,获取到下一伪装字符,执行步骤s0049;本实施例的情况下,不执行该步骤

s0048:输出高字节伪装字符的hex编码为0x11,获取下一伪装字符;

s0049:将低字节伪装字符的hex编码0x62和高字节伪装字符的hex编码0x11顺序合并为0x06211并输出作为明文字符的hex编码;

s005:将hex编码0x06211转换为unicode编码25105;

s006:生成unicode编码25105对应的明文字符“我”;

s007:判断是否完成所有伪装字符的解伪装,如果是,执行步骤s008,否则,执行步骤s004;

s008:将明文字符顺序合并,输出明文。

应当理解的是,本发明不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1