首页> 中国专利> 基于流密码的循环链表异或加密方法及解密方法

基于流密码的循环链表异或加密方法及解密方法

摘要

本发明公开了基于流密码的循环链表异或加密方法及解密方法,该加密方法包括:分别选取字符随机数、第一加密随机数和第二加密随机数;根据第一加密随机数和第二加密随机数的值,分别生成第一密钥字符指针和第二密钥字符指针使其指向密钥文件的对应字符位,同时根据字符随机数的值生成明文字符指针使其指向明文文件的对应字符位;分别设定明文字符指针、第一密钥字符指针和第二密钥字符指针的遍历方向;对第一密钥字符指针和第二密钥字符指针进行两次循环链表遍历,同时根据两者所指向的字符位的异或结果,遍历明文字符指针并生成密文文件。本发明实现方式简单,灵活性强,安全性高,可靠性高,可广泛应用于信息安全领域中。

著录项

  • 公开/公告号CN105141413A

    专利类型发明专利

  • 公开/公告日2015-12-09

    原文格式PDF

  • 申请/专利权人 吉林大学;

    申请/专利号CN201510476834.4

  • 发明设计人 司玉娟;郎六琪;

    申请日2015-08-06

  • 分类号H04L9/06(20060101);H04L9/18(20060101);

  • 代理机构44205 广州嘉权专利商标事务所有限公司;

  • 代理人谭志强

  • 地址 130012 吉林省长春市朝阳区前进大街2699号

  • 入库时间 2023-12-18 12:50:07

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-05-15

    授权

    授权

  • 2016-01-06

    实质审查的生效 IPC(主分类):H04L9/06 申请日:20150806

    实质审查的生效

  • 2015-12-09

    公开

    公开

说明书

技术领域

本发明涉及信息加解密领域,特别是涉及一种基于流密码的循环链表异或加密方法及解密方法。

背景技术

斯诺登事件之后,各国对自己的信息安全都加大了研发力度。美国之所以能够获取他国的信息内容,不仅与美国在通信技术的技术优势,以及互联网的超级用户管理权有关,而且也与现有技术中所采用的加密方法容易被破解有关。目前主要采用的加密方法是基于流密码的加密方法。流密码(streamcipher),也称之为序列密码。由于流密码的分析和设计往往用于一个国家的军事和外交通信,所以,流密码的研发和设计基本上都是在保密的状态下进行,各个国家研发流密码的学者和专家为了保密几乎没有过多的这方面的公开的论著。各国都将流密码技术和产品,作为军工产品而限制出口。由于它具有许多其他密码不可比拟的优点,所以,它是当今最为通用的密码系统之一。

现在的流密码学的研究方向,都是以数学模型为基础,使用复杂的代数运算、布尔代数运算、伪随机数、移位寄存器、线性反馈等。完成流密码的加密和解密。在这方面比较成功的方法有A5方法,S盒方法,RC4方法,K2方法等。这些方法已经是不公开的秘密,经过多年的研究,对其加密和解密已经具有了一定的成熟手段。现在已有很多学者研究攻击和破译上述方法加密的密文。这就使得使用以上的方法进行加密的密文,其安全性受到极大的挑战。

发明内容

为了解决上述的技术问题,本发明的目的是提供一种基于流密码的循环链表异或加密方法,本发明的另一目的是提供一种基于流密码的循环链表异或解密方法。

本发明解决其技术问题所采用的技术方案是:

基于流密码的循环链表异或加密方法,包括:

S1、分别选取字符随机数、第一加密随机数和第二加密随机数;

S2、根据第一加密随机数和第二加密随机数的值,分别生成第一密钥字符指针和第二密钥字符指针使其指向密钥文件的对应字符位,同时根据字符随机数的值生成明文字符指针使其指向明文文件的对应字符位;

S3、分别设定明文字符指针、第一密钥字符指针和第二密钥字符指针的遍历方向;

S4、对第一密钥字符指针和第二密钥字符指针进行两次循环链表遍历,同时根据两者所指向的字符位的异或结果,遍历明文字符指针并生成密文文件。

进一步,所述步骤S1,其具体为:

获取明文文件的码元个数n后,选取小于该码元个数n的整数作为字符随机数,同时获取密钥文件的码元个数m后,分别选取两个小于该码元个数m的整数作为第一加密随机数和第二加密随机数。

进一步,步骤S4,包括:

S41、在计算机内存开辟密文存储空间,并生成密文字符指针使其指向密文存储空间的首地址;

S42、对第一密钥字符指针和第二密钥字符指针进行两次循环链表遍历,同时根据两者所指向的字符位的异或结果,对明文字符指针和密文字符指针进行遍历,并将明文字符指针所指向的字符填入密文字符指针所指向的密文存储空间中;

S43、读取密文存储空间的字节,生成密文文件。

进一步,所述步骤S42,包括:

S421、对第一密钥字符指针和第二密钥字符指针进行循环链表遍历,若判断第一密钥字符指针和第二密钥字符指针所指向的字符位的异或结果为第一结果值,则将明文字符指针所指向的字符填入密文字符指针所指向的密文存储空间中,同时将明文字符指针和密文字符指针指向下一位,反之,将密文字符指针指向下一位;

S422、再次对第一密钥字符指针和第二密钥字符指针进行循环链表遍历,若判断第一密钥字符指针和第二密钥字符指针所指向的字符位的异或结果为第二结果值,则将明文字符指针所指向的字符填入密文字符指针所指向的密文存储空间中,同时将明文字符指针和密文字符指针指向下一位,反之,将密文字符指针指向下一位;

所述第一结果值和第二结果值的异或结果为1。

本发明解决其技术问题所采用的另一技术方案是:

基于流密码的循环链表异或解密方法,包括:

S5、获取字符随机数、第一加密随机数和第二加密随机数,同时在计算机内存开辟明文存储空间;

S6、根据第一加密随机数和第二加密随机数的值,分别生成第一密钥字符指针和第二密钥字符指针使其指向密钥文件的对应字符位,同时根据字符随机数的值生成明文字符指针使其指向明文存储空间的对应字符位;

S7、分别获取明文字符指针、第一密钥字符指针和第二密钥字符指针的遍历方向;

S8、对第一密钥字符指针和第二密钥字符指针进行两次循环链表遍历,同时根据两者所指向的字符位的异或结果,遍历密文文件后生成明文文件。

进一步,所述步骤S8,包括:

S81、生成密文字符指针使其指向密文文件的第一位;

S82、对第一密钥字符指针和第二密钥字符指针进行两次循环链表遍历,同时根据两者所指向的字符位的异或结果,对密文字符指针和明文字符指针进行遍历,并将密文字符指针所指向的字符填入明文字符指针所指向的明文存储空间中;

S83、读取明文存储空间的字节,生成明文文件。

进一步,所述步骤S82,包括:

S821、对第一密钥字符指针和第二密钥字符指针进行循环链表遍历,若判断第一密钥字符指针和第二密钥字符指针所指向的字符位的异或结果为第一结果值,则将密文字符指针所指向的字符填入明文字符指针所指向的明文存储空间中,同时将密文字符指针和明文字符指针指向下一位,反之,将密文字符指针指向下一位;

S822、再次对第一密钥字符指针和第二密钥字符指针进行循环链表遍历,若判断第一密钥字符指针和第二密钥字符指针所指向的字符位的异或结果为第二结果值,则将密文字符指针所指向的字符填入明文字符指针所指向的明文存储空间中,同时将密文字符指针和明文字符指针指向下一位,反之,将密文字符指针指向下一位;

所述第一结果值和第二结果值的异或结果为1。

进一步,所述密钥文件的码元个数m小于等于明文文件的码元个数n。

本发明的有益效果是:本发明的基于流密码的循环链表异或加密方法,包括:分别选取字符随机数、第一加密随机数和第二加密随机数;根据第一加密随机数和第二加密随机数的值,分别生成第一密钥字符指针和第二密钥字符指针使其指向密钥文件的对应字符位,同时根据字符随机数的值生成明文字符指针使其指向明文文件的对应字符位;分别设定明文字符指针、第一密钥字符指针和第二密钥字符指针的遍历方向;对第一密钥字符指针和第二密钥字符指针进行两次循环链表遍历,同时根据两者所指向的字符位的异或结果,遍历明文字符指针并生成密文文件。本加密方法实现方式简单,灵活性强,安全性高,可靠性高。

本发明的另一有益效果是:本发明的基于流密码的循环链表异或解密方法,包括:获取字符随机数、第一加密随机数和第二加密随机数,同时在计算机内存开辟明文存储空间;根据第一加密随机数和第二加密随机数的值,分别生成第一密钥字符指针和第二密钥字符指针使其指向密钥文件的对应字符位,同时根据字符随机数的值生成明文字符指针使其指向明文存储空间的对应字符位;分别获取明文字符指针、第一密钥字符指针和第二密钥字符指针的遍历方向;对第一密钥字符指针和第二密钥字符指针进行两次循环链表遍历,同时根据两者所指向的字符位的异或结果,遍历密文文件后生成明文文件。本解密方法实现方式简单,灵活性强,安全性高,可靠性高。

附图说明

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

图1是本发明的基于流密码的循环链表异或加密方法的流程图;

图2是本发明的基于流密码的循环链表异或解密方法的流程图;

图3是本发明的基于流密码的循环链表异或加密方法的详细实施例中对明文文件进行遍历加密的列表示意图;

图4是本发明的基于流密码的循环链表异或解密方法的详细实施例中对密文文件进行遍历解密的列表示意图。

具体实施方式

参照图1,本发明提供了一种基于流密码的循环链表异或加密方法,包括:

S1、分别选取字符随机数、第一加密随机数和第二加密随机数;

S2、根据第一加密随机数和第二加密随机数的值,分别生成第一密钥字符指针和第二密钥字符指针使其指向密钥文件的对应字符位,同时根据字符随机数的值生成明文字符指针使其指向明文文件的对应字符位;

S3、分别设定明文字符指针、第一密钥字符指针和第二密钥字符指针的遍历方向;

S4、对第一密钥字符指针和第二密钥字符指针进行两次循环链表遍历,同时根据两者所指向的字符位的异或结果,遍历明文字符指针并生成密文文件。

进一步作为优选的实施方式,所述步骤S1,其具体为:

获取明文文件的码元个数n后,选取小于该码元个数n的整数作为字符随机数,同时获取密钥文件的码元个数m后,分别选取两个小于该码元个数m的整数作为第一加密随机数和第二加密随机数。

进一步作为优选的实施方式,步骤S4,包括:

S41、在计算机内存开辟密文存储空间,并生成密文字符指针使其指向密文存储空间的首地址;

S42、对第一密钥字符指针和第二密钥字符指针进行两次循环链表遍历,同时根据两者所指向的字符位的异或结果,对明文字符指针和密文字符指针进行遍历,并将明文字符指针所指向的字符填入密文字符指针所指向的密文存储空间中;

S43、读取密文存储空间的字节,生成密文文件。

进一步作为优选的实施方式,所述步骤S42,包括:

S421、对第一密钥字符指针和第二密钥字符指针进行循环链表遍历,若判断第一密钥字符指针和第二密钥字符指针所指向的字符位的异或结果为第一结果值,则将明文字符指针所指向的字符填入密文字符指针所指向的密文存储空间中,同时将明文字符指针和密文字符指针指向下一位,反之,将密文字符指针指向下一位;

S422、再次对第一密钥字符指针和第二密钥字符指针进行循环链表遍历,若判断第一密钥字符指针和第二密钥字符指针所指向的字符位的异或结果为第二结果值,则将明文字符指针所指向的字符填入密文字符指针所指向的密文存储空间中,同时将明文字符指针和密文字符指针指向下一位,反之,将密文字符指针指向下一位;

所述第一结果值和第二结果值的异或结果为1。例如,第一结果值为1,则第二结果值为0,步骤S421中进行遍历时,只有当第一密钥字符指针和第二密钥字符指针所指向的字符位的异或结果为1时,才会将明文字符指针所指向的字符赋值到密文字符指针所指向的密文存储空间中,并且在每次对密文存储空间进行赋值时,才将明文字符指针按照设定的遍历方向移动一位,遍历时在每进行一次异或操作判断后,均将密文字符指针按照设定的遍历方向移动一位,密文字符指针的遍历方向也是循环遍历方式。

参照图2,本发明还提供了一种基于流密码的循环链表异或解密方法,包括:

S5、获取字符随机数、第一加密随机数和第二加密随机数,同时在计算机内存开辟明文存储空间;在计算机内存开辟明文存储空间具体是:获取明文文件的码元个数后,在计算机内开辟与该码元个数相同位数的明文存储空间;

S6、根据第一加密随机数和第二加密随机数的值,分别生成第一密钥字符指针和第二密钥字符指针使其指向密钥文件的对应字符位,同时根据字符随机数的值生成明文字符指针使其指向明文存储空间的对应字符位;

S7、分别获取明文字符指针、第一密钥字符指针和第二密钥字符指针的遍历方向;

S8、对第一密钥字符指针和第二密钥字符指针进行两次循环链表遍历,同时根据两者所指向的字符位的异或结果,遍历密文文件后生成明文文件。

进一步作为优选的实施方式,所述步骤S8,包括:

S81、生成密文字符指针使其指向密文文件的第一位;

S82、对第一密钥字符指针和第二密钥字符指针进行两次循环链表遍历,同时根据两者所指向的字符位的异或结果,对密文字符指针和明文字符指针进行遍历,并将密文字符指针所指向的字符填入明文字符指针所指向的明文存储空间中;

S83、读取明文存储空间的字节,生成明文文件。

进一步作为优选的实施方式,所述步骤S82,包括:

S821、对第一密钥字符指针和第二密钥字符指针进行循环链表遍历,若判断第一密钥字符指针和第二密钥字符指针所指向的字符位的异或结果为第一结果值,则将密文字符指针所指向的字符填入明文字符指针所指向的明文存储空间中,同时将密文字符指针和明文字符指针指向下一位,反之,将密文字符指针指向下一位;

S822、再次对第一密钥字符指针和第二密钥字符指针进行循环链表遍历,若判断第一密钥字符指针和第二密钥字符指针所指向的字符位的异或结果为第二结果值,则将密文字符指针所指向的字符填入明文字符指针所指向的明文存储空间中,同时将密文字符指针和明文字符指针指向下一位,反之,将密文字符指针指向下一位;

与步骤S42中对应,第一结果值和第二结果值的异或结果为1。例如,第一结果值为1,则第二结果值为0,步骤S821中进行遍历时,只有当第一密钥字符指针和第二密钥字符指针所指向的字符位的异或结果为1时,才会将密文字符指针所指向的字符赋值到明文字符指针所指向的明文存储空间中,并且在每次对明文存储空间进行赋值时,才将明文字符指针按照设定的遍历方向移动一位,遍历时在每进行一次异或操作判断后,均将密文字符指针按照设定的遍历方向移动一位,密文字符指针的遍历方向也是循环遍历方式。

本发明的加密方法和解密方法中,密文字符指针的遍历方向都是向下一位遍历,遍历到最后一位时,密文字符指针相应地返回指向密文存储空间或密文文件的第一位。

进一步作为优选的实施方式,所述密钥文件的码元个数m小于等于明文文件的码元个数n。

密钥文件可以来自于音频、视频、图片、图像、图形、伪随机码、混沌值等。

本发明在流密码加密的过程中不需要专用的计算机硬件、专用的电子逻辑器件,更不需要逻辑电路的设计,完全是用计算机软件编程解决流密码的加密和解密过程。这样,明码的加密和解密的外界条件要求很低,只要有联网的计算机,就可进行加密和解密工作,本项技术具有很强的适用性。

而且本发明不仅实现方式简单,加密解密过程灵活性强,安全性高,可靠性高。

下面结合实施例对本发明做详细说明:

实施例一

基于流密码的循环链表异或加密方法:

设明文文件M={x0x1…xn-1},xi={0,1},密钥文件P={y0y1…yn-1},yi={0,1},对明文文件M和密钥文件P而言,i的取值范围均为:0≤i≤n-1。明文文件M和密钥文件P为循环链表,例如,遍历到yn-1时,后继遍历的是y0,同样的,遍历到xn-1时,后继遍历的是x0

分别选取字符随机数k、第一加密随机数i和第二加密随机数j,满足以下条件:0≤k≤n-1,0≤i≤n-1,0≤j≤n-1。

生成第一密钥字符指针p和第二密钥字符指针q,使得p指向密钥文件的对应字符位yi位,q指向密钥文件的对应字符位yj位,同时生成明文字符指针r,使得r指向明文文件的对应字符位xk位。

明文字符指针r的遍历方向可以为r++指向xk+1或r--指向xk-1,第一密钥字符指针p的遍历方向可以为p++指向yi+1或者p--指向yi-1,第二密钥字符指针q的遍历方向可以为q++指向yj+1或者q--指向yj-1

本实施例中,分别设定明文字符指针r的遍历方向为r++指向xk+1,第一密钥字符指针p的遍历方向为p++指向yi+1,第二密钥字符指针q的遍历方向为q++指向yj+1

在计算机内存开辟密文存储空间C={z0z1…zn-1},zi={0,1},并生成密文字符指针s使其指向密文存储空间C的首地址z0

执行第一次遍历,判断*p⊕*q的结果值,若结果值为“1”,则*s=*r,p++,q++,s++,r++,否则,p++,q++,s++。

执行完一次遍历后,第一密钥字符指针p又指向了密钥文件的对应字符位yi位,第二密钥字符指针q又指向密钥文件的对应字符位yj位,密文字符指针s又指向密文存储空间C的首地址z0

执行第二次遍历,判断*p⊕*q的结果值,若结果值为“0”,则*s=*r,p++,q++,s++,r++,否则,p++,q++,s++。

为了保证遍历的一致性,执行第二次遍历之前,可以获取第一加密随机数i和第二加密随机数j的值,使得第一密钥字符指针p又指向了密钥文件的对应字符位yi位,第二密钥字符指针q又指向密钥文件的对应字符位yj位后,同时使得密文字符指针s指向密文存储空间C的首地址z0后,再进行遍历。

实施例二

本实施例是与实施例一对应的基于流密码的循环链表异或解密方法:

获取字符随机数k、第一加密随机数i和第二加密随机数j;

生成第一密钥字符指针p和第二密钥字符指针q,使得p指向密钥文件的对应字符位yi位,q指向密钥文件的对应字符位yj位,同时生成明文字符指针r,在计算机内存开辟明文存储空间M’={x0x1…xn-1},xi={0,1},使得r指向明文存储空间M’的对应字符位xk位。

分别获取明文字符指针r、第一密钥字符指针p和第二密钥字符指针q的遍历方向;

生成密文字符指针s使其指向密文文件的第一位z0

执行第一次遍历,判断*p⊕*q的结果值,若结果值为“1”,则*r=*s,p++,q++,s++,r++,否则,p++,q++,s++。

执行完一次遍历后,第一密钥字符指针p又指向了密钥文件的对应字符位yi位,第二密钥字符指针q又指向密钥文件的对应字符位yj位,密文字符指针s又指向密文文件的第一位z0

执行第二次遍历,判断*p⊕*q的结果值,若结果值为“0”,则*r=*s,p++,q++,s++,r++,否则,p++,q++,s++。

为了保证遍历的一致性,执行第二次遍历之前,可以获取第一加密随机数i和第二加密随机数j的值,使得第一密钥字符指针p又指向了密钥文件的对应字符位yi位,第二密钥字符指针q又指向密钥文件的对应字符位yj位后,同时使得密文字符指针s指向密文文件的第一位z0后,再进行遍历。

实施例三

本实施例是基于实施例一的详细例子。明文文件M={中}=(0xE60xD0)16=(x0…x15)2=(1110011011010000)2,密钥文件P={祖}=(0xD70xE6)16=(y0…y15)2=(1101011111100110)2,选取i=3,j=4,k=5,生成第一密钥字符指针p和第二密钥字符指针q,使得p指向密钥文件的对应字符位y3位,q指向密钥文件的对应字符位y4位,同时生成明文字符指针r,使得r指向明文文件的对应字符位x5位,生成密文字符指针s使其指向密文存储空间的第一位z0

遍历时指针行进方向:p++→y4;q++→y5;r++→x6

执行循环链表遍历时,对明文文件进行遍历加密的具体加密过程如图3所示,最后获得密文文件为C={乞}={0xC6,0xF2}。

实施例四

本实施例是基于实施例二的详细例子,对实施例三中生成的密文文件进行解密。

密文文件C={乞}=(0xC6,0xF2)16=(z0z1…z15)2=(1100011011110010)2,密钥文件P={祖}=(0xD70xE6)16=(y0…y15)2=(1101011111100110)2,获得i=3,j=4,k=5,生成第一密钥字符指针p和第二密钥字符指针q,使得p指向密钥文件的对应字符位y3位,q指向密钥文件的对应字符位y4位,同时计算机内存开辟明文存储空间,生成明文字符指针r,使得r指向明文存储空间的对应字符位x5位,生成密文字符指针s使其指向密文文件的第一位z0

遍历时指针行进方向:p++→y4;q++→y5;r++→x6

执行循环链表遍历时,对密文文件进行遍历解密的具体解密过程如图4所示,最后读取明文存储空间后生成明文文件为M={中}=(0xE60xD0)16

实施例三和实施例四只取一个字节作为密钥文件P进行加密,这样的加密容易被破解。但是,当密钥文件P的字节为8、16、32甚至64字节时,其破译的难度将会越来越大。密钥文件P的长度最长可以与明文的字节长度一样。即使密钥文件P只采用单字节,但是对长度较长的明文文件进行多次迭代时,其破译难度将相当大。由此可见,本方法不仅实现方式简单,而且灵活性强,安全性高,可靠性高。

以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做出种种的等同变形或替换,这些等同的变型或替换均包含在本申请权利要求所限定的范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号