一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于密钥流池的实时加解密方法、系统、计算机和存储介质与流程

2022-02-21 04:05:07 来源:中国专利 TAG:


1.本技术涉及数据安全的技术领域,特别是涉及一种基于密钥流池的实时加解密方法、系统、计算机和可读存储介质。


背景技术:

2.目前,随着计算机、手机等电子产品在人们工作生活中的广泛应用,特别是由于互联网和二、三、四代移动互联信息技术的蓬勃发展并深度渗透到人们的工作生活中,人们接触的数字信息量出现爆炸性增长,每个人都成为数据的制造者和消费者。人们开始发现需要存储及处理的信息数据急剧增多,所受到的信息安全威胁越来越大,对于信息安全保障的需求也越来越高。流密码也称序列密码,目前流密码的设计方案,主要采用系统论的方法,密钥流序列的生成主要是利用线性反馈移位寄存器产生伪随机序列。生成伪随机数列的方法如下:反馈移位寄存器序列;线性移位寄存器加非线性前馈函数产生前馈序列;钟控序列;组合网络序列;进位移位寄存器;元胞自动机;混沌理论等。
3.随着人们对数据安全的重视,在实时性要求很高的情况下,加密速率与加密对性能的消耗是必须要考虑的问题。诸如,以现有的ctr加密模式为例,其流程图如图1所示,可知每次加密的时候都需要通过counter计算密钥k,这样加解密方式给系统性能的消耗较大,加解密效率低下,且无法保证真正的实时加解密。针对其他的加解密模式,例如ecb、cbc、ocf或者cfb加解密模式,其仍然存在加解密时面对复杂运算及占用较长cpu时间给系统性能的消耗较大的问题,同时很有可能带来数据的加密膨胀问题。
4.目前针对相关技术中的加解密方法存在的加解密效率低下,及加解密运算时对cpu时间的消耗较大,造成加解密性能效果不佳,占用较长cpu时间给系统性能的消耗较大,以及无法真正实现实时加解密的技术问题,尚未提出有效的解决方案。


技术实现要素:

5.本技术实施例提供了一种基于密钥流池的实时加解密方法、系统、计算机和存储介质,以至少解决相关技术中的加解密方法存在的加解密性能效果不佳,占用较长cpu时间给系统性能的消耗较大,以及无法真正实现实时加解密的技术问题。
6.第一方面,本技术实施例提供了一种基于密钥流池的实时加解密方法,包括:
7.获取指定版本的密钥,以生成指定大小的密钥流池;
8.根据所述密钥流池长度为基准,对输入的数据流按照预定规则划分为n个数据块;
9.计算第i个数据块的偏移量,并对第i个数据块进行数据块内循环异或处理,其中i《=n;
10.循环处理所有数据块,得到加解密后的数据流。
11.在其中一些实施例中,所述方法包括:
12.若所述第i个数据块加密数据长度小于密钥流池长度,直接从所述第i个数据块偏移量处进行异或加解密处理,超出所述密钥流池部分从所述密钥流池头部进行循环异或加
解密处理;
13.若所述第i个数据块加密数据长度等于密钥流池长度,直接从所述第i个数据块偏移量处进行循环异或加解密处理;
14.若所述第i个数据块加密数据长度大于密钥流池长度,从所述偏移量处进行异或加解密处理,且每加解密所述密钥流池长度,偏移量增加一倍大小,然后再进行循环异或加解密处理。
15.在其中一些实施例中,所述方法包括:
16.采用index=(start
×
i)%size公式,计算出所述第i个数据块的偏移量,式中,start表示所述第i块数据块异或加解密处理的开始位置,size表示所述密钥流池指定大小或长度;
17.采用res[i][j]=keys[(index j)%size]

data[i][j]公式,对所述第i个数据块中的字节逐一进行异或加解密处理,获取所述第i个数据块的加解密结果res[i],式中,0<j<size,keys[(index j)%size]表示密钥流池的(index j)%size位置,data[i][j]表示数据第i块的第j个字节;
[0018]
循环采用上述步骤,逐一获取所有数据块的加解密结果res[1]、res[2]、...、res[n];
[0019]
叠加获取的所有加解密结果,得到实时加解密处理的结果。
[0020]
在其中一些实施例中,所述获取指定版本的密钥,以生成指定大小的密钥流池的具体步骤包括:
[0021]
加密时从密钥管理系统获取最新版本的密钥参数,解密时获取指定版本的密钥参数,密钥参数包含加密算法、密钥版本、初始向量iv、密钥流池的大小或长度、以及开始位置;
[0022]
采用ctr加密模式,通密钥、算法、初始向量iv生成指定大小或长度的密钥流池。
[0023]
第二方面,本技术实施例提供了一种基于密钥流池的实时加解密系统,包括:
[0024]
生成模块:用于获取指定版本的密钥,以生成指定大小的密钥流池;
[0025]
分块模块:用于根据所述密钥流池长度为基准,对输入的数据流按照预定规则划分为n个数据块;
[0026]
数据块循环异或加解密模块:用于计算第i个数据块的偏移量,并对第i个数据块进行数据块内循环异或处理,其中i《=n;循环处理所有数据块,得到加解密后的数据流。
[0027]
在其中一些实施例中,所述系统包括:
[0028]
偏移量计算模块:采用index=(start*i)%size公式,计算出所述第i个数据块的偏移量,式中,start表示所述第i块数据块异或加解密处理的开始位置,size表示所述密钥流池指定大小或长度;
[0029]
数据块字节循环异或加解密模块:采用res[i][j]=keys[(index j)%size]

data[i][j]公式,对所述第i个数据块中的字节逐一进行异或加解密处理,获取所述第i个数据块的加解密结果res[i],式中,0<j<size,keys[(index j)%size]表示密钥流池的(index j)%size位置,data[i][j]表示数据第i块的第j个字节;循环采用上述步骤,逐一获取所有数据块的加解密结果res[1]、res[2]、...、res[n];
[0030]
叠加模块:叠加获取的所有加解密结果,得到实时加解密处理的结果。
[0031]
在其中一些实施例中,所述数据块循环异或加解密模块设置成:
[0032]
若所述第i个数据块加密数据长度小于密钥流池长度,直接从所述第i个数据块偏移量处进行异或加解密处理,超出所述密钥流池部分从所述密钥流池端部进行循环异或加解密处理;
[0033]
若所述第i个数据块加密数据长度等于密钥流池长度,直接从所述第i个数据块偏移量处进行循环异或加解密处理;
[0034]
若所述第i个数据块加密数据长度大于密钥流池长度,从所述偏移量处进行异或加解密处理,且每加解密所述密钥流池长度,偏移量增加一倍大小,然后再进行循环异或加解密处理。
[0035]
在其中一些实施例中,所述生成模块设置成:
[0036]
加密时从密钥管理系统获取最新版本的密钥参数,解密时获取指定版本的密钥参数,密钥参数包含加密算法、密钥版本、初始向量iv、密钥流池的大小或长度、以及开始位置
[0037]
采用ctr加密模式,通密钥、算法、初始向量iv生成指定大小或长度的密钥流池。
[0038]
第三方面,本技术实施例提供了一种计算机,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的基于密钥流池的实时加解密方法。
[0039]
第四方面,本技术实施例提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一方面所述的基于密钥流池的实时加解密方法。
[0040]
相比于相关技术,本技术实施例提供的基于密钥流池的实时加解密方法、系统、计算机和存储介质,通过带版本号密钥流池的循环偏移异或的实时加解密方法,解决了相关技术中的加解密方法存在的加解密性能效果不佳,占用较长cpu时间给系统性能的消耗较大,以及无法真正实现实时加解密的技术问题,一则实现能根据密钥的版本信息及时更新加解密密钥;二则实现加解密方式为异或方式无数据膨胀现象;三则实现数据的加解密只有异或操作,加解密能达到真正的实时。
[0041]
本技术的一个或多个实施例的细节在以下附图和描述中提出,以使本技术的其他特征、目的和优点更加简明易懂。
附图说明
[0042]
此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
[0043]
图1是根据相关技术的sm4的ctr加密模式流程图;
[0044]
图2是根据本技术实施例一的基于密钥流池的实时加解密方法的流程图;
[0045]
图3是根据本技术实施例一的步骤s110的流程图;
[0046]
图4是根据本技术实施例一的步骤s110生成密钥流池的原理图;
[0047]
图5是根据本技术实施例一的步骤s130的流程图;
[0048]
图6是本发明实施例二提供的与实施例一方法对应的基于密钥流池的实时加解密方法的系统结构框图;
[0049]
图7是根据本技术实施例三的基于密钥流池的实时加解密方法的流程图;
[0050]
图8是根据本技术实施例三其中一种异或加解密处理的原理图;
[0051]
图9是根据本技术实施例三另一种异或加解密处理的原理图;
[0052]
图10是根据本技术实施例三另一种异或加解密处理的原理图;
[0053]
图11是根据本技术实施例四的基于密钥流池的实时加解密方法的流程图;
[0054]
图12是根据本技术实施例五的基于密钥流池的实时加解密方法的流程图;
[0055]
图13是根据本技术实施例六的基于密钥流池的实时加解密方法的流程图;
[0056]
图14是根据本技术实施例七的基于密钥流池的实时加解密方法的流程图;
[0057]
图15是根据本技术实施例八的基于密钥流池的实时加解密方法的流程图;
[0058]
图16是本发明实施例九提供的计算机的硬件结构示意图。
[0059]
附图标记说明:
[0060]
10-生成模块;
[0061]
20-分块模块;
[0062]
30-数据块循环异或加解密模块、31-偏移量计算模块、32-数据块字节循环异或加解密模块、叠加模块;
[0063]
40-总线、41-处理器、42-存储器、43-通信接口。
具体实施方式
[0064]
为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。基于本技术提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
[0065]
显而易见地,下面描述中的附图仅仅是本技术的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本技术应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本技术公开的内容相关的本领域的普通技术人员而言,在本技术揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本技术公开的内容不充分。
[0066]
在本技术中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本技术所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
[0067]
除非另作定义,本技术所涉及的技术术语或者科学术语应当为本技术所属技术领域内具有一般技能的人士所理解的通常意义。本技术所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本技术所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本技术所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本技术所涉及的“多个”是指两个
或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本技术所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
[0068]
本技术中描述的各种技术可用于各种无线通信系统,例如2g、3g、4g、5g通信系统以及下一代通信系统,又例如全球移动通信系统(global system for mobile communications,简称为gsm),码分多址(code division multiple access,简称为cdma)系统,时分多址(time division multiple access,简称为tdma)系统,宽带码分多址(wideband code division multiple access wireless,简称为wcdma),频分多址(frequency division multiple addressing,简称为fdma)系统,正交频分多址(orthogonal frequency-division multiple access,简称为ofdma)系统,单载波fdma(sc-fdma)系统,通用分组无线业务(general packet radio service,简称为gprs)系统,长期演进(long term evolution,简称为lte)系统,5g新空口(new radio,简称为nr)系统以及其他此类通信系统。
[0069]
本实施例提供的基于密钥流池的实时加解密系统可集成在基站、射频拉远单元(radio remote unit,简称为rru)或者其他任意需要进行射频收发的网元设备中。本文中的基站可以是接入网中在空中接口上通过一个或多个扇区与无线终端通信的设备。基站可用于将收到的空中帧与网际协议(internet protocol,简称为ip)分组进行相互转换,作为无线终端与接入网的其余部分之间的路由器,其中接入网的其余部分可包括ip网络。基站还可协调对空中接口的属性管理。例如,基站可以是gsm或cdma中的基站(base transceiver station,简称为bts),也可以是wcdma中的基站(node b),还可以是lte中的演进型基站(evolutional node b,简称为enb或e-node b),还可以是5g nr中的(generation node b,简称为gnb),本技术并不限定。
[0070]
实施例一
[0071]
本实施例提供了一种基于密钥流池的实时加解密方法。图2是根据本技术实施例的基于密钥流池的实时加解密方法的流程图,如图2所示,该流程包括如下步骤:
[0072]
步骤s110,获取指定版本的密钥,以生成指定大小或长度的密钥流池。
[0073]
其中,所述指定版本指密钥管理系统中的密钥版本信息。需要说明的是,加解密处理时必须需要指定的密钥版本信息,才可以生成相同的密钥流池和密钥流池的使用方法。此外,密钥流池是指利用指定版本的密钥,利用计数模式生成的指定大小的数据流池,可以理解密钥流池为一个环形结构,能循环使用密钥流池中数据。计数模式(ctr模式)加密是对一系列输入数据块(称为计数)进行加密,产生一系列的输出块,输出块与明文异或得到密文。
[0074]
进一步地,如图3所示,所述步骤s110的具体步骤包括:
[0075]
步骤s111,加密时从密钥管理系统获取最新版本的密钥参数,解密时获取指定版本的密钥参数,密钥参数包含加密算法、密钥版本、初始向量iv、密钥流池的大小或长度、以及开始位置;
[0076]
步骤s112,采用ctr加密模式,通密钥、算法、初始向量iv生成指定大小或长度的密钥流池。
[0077]
其中,密钥管理系统,简称kms,其功能在于保存密钥、密钥版本、加密算法、初始向量、密钥池大小、偏移量等参数;实际应用过程中使用安全接口保证密钥的私密性。初始向量(iv)是一个固定长度的输入值,加密模式中中与第一个明文计算的数据块,一般用在cbc、crt模式中。如图4所示,具体实践中,加密时获取最新版本密钥参数,解密时获取指定版本密钥参数。
[0078]
步骤s120,根据所述密钥流池长度为基准,对输入的数据流按照预定规则划分为n个数据块。
[0079]
其中,输入的待加解密的数据流data长度为len。
[0080]
其中,分块处理的具体方法是:把数据流data分为n块(n≥1),其中,每块的数据块以所述密钥流池长度为基准,采用分块算法n=(len size-1)/size公式进行分块,式中,len代表所述加解密数据流长度,size代表所述密钥流池长度。
[0081]
步骤s130,计算第i个数据块的偏移量,并对第i个数据块进行数据块内循环异或处理,其中i《=n;循环处理所有数据块,得到加解密后的结果。
[0082]
进一步地,如图5所示,步骤s130的具体步骤包括:
[0083]
步骤s131,采用index=(start*i)%size公式,计算出所述第i个数据块的偏移量,式中,start表示所述第i块数据块异或加解密处理的开始位置,size表示所述密钥流池长度;
[0084]
步骤s132,采用res[i][j]=keys[(index j)%size]

data[i][j]公式,对所述第i个数据块中的字节逐一进行异或加解密处理,获取所述第i个数据块的加解密结果res[i],式中,0<j<size,keys[(index j)%size]表示密钥流池的(index j)%size位置,data[i][j]表示数据第i块的第j个字节;
[0085]
步骤s133,循环采用上述步骤,逐一获取所有数据块的加解密结果res[1]、res[2]、...、res[n];
[0086]
步骤s134,叠加获取的所有加解密结果,得到实时加解密处理的结果。
[0087]
通过上述步骤,通过带版本号密钥流池的循环偏移异或的实时加解密方法,其中,带版本的密钥流池解决了密钥更新与密文存储问题,循环偏移异或加解密方法提升加解密的实时性能与cpu运行效率,解决了相关技术中的加解密方法存在的加解密性能效果不佳,占用较长cpu时间给系统性能的消耗较大,以及无法真正实现实时加解密的技术问题,对比sm4的ctr加密模式或cbc加密模式,本方法的加解密速度是千倍以上,对cpu的时间消耗减少百倍。
[0088]
实施例二
[0089]
本实施例提供了与实施例一所述方法相对应的系统结构框图。图6是根据本技术实施例的基于密钥流池的实时加解密系统结构框图,如图6所示,该系统包括:
[0090]
生成模块10:用于获取指定版本的密钥,以生成指定大小或长度的密钥流池;
[0091]
分块模块20:用于根据所述密钥流池长度为基准,对输入的数据流按照预定规则划分为n个数据块;
[0092]
数据块循环异或加解密模块30:用于计算第i个数据块的偏移量,并对第i个数据块进行数据块内循环异或处理,其中i《=n;循环处理所有数据块,得到加解密后的数据流。
[0093]
进一步地,所述系统包括:
[0094]
偏移量计算模块31:采用index=(start*i)%size公式,计算出所述第i个数据块的偏移量,式中,start表示所述第i块数据块异或加解密处理的开始位置,size表示所述密钥流池指定大小或长度;
[0095]
数据块字节循环异或加解密模块32:采用res[i][j]=keys[(index j)%size]

data[i][j]公式,对所述第i个数据块中的字节逐一进行异或加解密处理,获取所述第i个数据块的加解密结果res[i],式中,0<j<size,keys[(index j)%size]表示密钥流池的(index j)%size位置,data[i][j]表示数据第i块的第j个字节;循环采用上述步骤,逐一获取所有数据块的加解密结果res[1]、res[2]、...、res[n];
[0096]
叠加模块33:叠加获取的所有加解密结果,得到实时加解密处理的结果。
[0097]
进一步地,所述数据块循环异或加解密模块设置成:
[0098]
若所述第i个数据块加密数据长度小于密钥流池长度,直接从所述第i个数据块偏移量处进行异或加解密处理,超出所述密钥流池部分从所述密钥流池端部进行循环异或加解密处理;
[0099]
若所述第i个数据块加密数据长度等于密钥流池长度,直接从所述第i个数据块偏移量处进行循环异或加解密处理;
[0100]
若所述第i个数据块加密数据长度大于密钥流池长度,从所述偏移量处进行异或加解密处理,且每加解密所述密钥流池长度,偏移量增加一倍大小,然后再进行循环异或加解密处理。
[0101]
进一步地,所述生成模块设置成:
[0102]
加密时从密钥管理系统获取最新版本的密钥参数,解密时获取指定版本的密钥参数,密钥参数包含加密算法、密钥版本、初始向量iv、密钥流池的大小或长度、以及开始位置
[0103]
采用ctr加密模式,通密钥、算法、初始向量iv生成指定大小或长度的密钥流池。
[0104]
需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
[0105]
实施例三
[0106]
本实施例提供了一种基于密钥流池的实时加解密方法。图7是根据本技术实施例的基于密钥流池的实时加解密方法的流程图,如图7所示,该流程包括如下:
[0107]
步骤s210,获取指定版本的密钥,以生成指定大小或长度的密钥流池。
[0108]
其中,具体步骤的实施可参阅实施例一的步骤s110,故在此不一一赘述。
[0109]
步骤s220,根据所述密钥流池长度为基准,对输入的数据流按照预定规则划分为n个数据块。
[0110]
其中,输入的待加解密的数据流data长度为len。
[0111]
步骤s230,计算第i个数据块的偏移量,并对第i个数据块进行数据块内循环异或处理,其中i《=n;循环处理所有数据块,得到加解密后的结果。
[0112]
步骤s240,具体为:
[0113]
若所述第i个数据块加密数据长度小于密钥流池长度,直接从所述第i个数据块偏移量处进行异或加解密处理,超出所述密钥流池部分从所述密钥流池头部进行循环异或加
解密处理,具体的可参阅图8所示原理图;
[0114]
若所述第i个数据块加密数据长度等于密钥流池长度,直接从所述第i个数据块偏移量处进行循环异或加解密处理,具体的可参阅图9所示原理图;
[0115]
若所述第i个数据块加密数据长度大于密钥流池长度,从所述偏移量处进行异或加解密处理,且每加解密所述密钥流池长度,偏移量增加一倍大小,然后再进行循环异或加解密处理,具体的可参阅图10所示原理图。
[0116]
需要说明的是,在本发明的一些实施例中,上述针对输入的数据流根据所述密钥流池长度为基准随机进行划分,使得一部分数据块加密数据长度小于密钥流池长度,一部分数据块加密数据长度等于密钥流池长度,另一部分据块加密数据长度大于密钥流池长度,使得不同的数据块以不同的进行循环异或加解密处理。
[0117]
在本发明的另一些实施例中,上述针对输入的数据流被指定大小或长度的密钥流池划分后剩下的尾部数据块,若尾部数据块加密数据长度小于密钥流池长度,则直接从所述第i个数据块偏移量处进行异或加解密处理,超出所述密钥流池部分从所述密钥流池头部进行循环异或加解密处理,具体的可参阅图8所示原理图;若尾部数据块加密数据长度等于密钥流池长度,直接从所述第i个数据块偏移量处进行循环异或加解密处理,具体的可参阅图9所示原理图;若尾部数据块加密数据长度大于密钥流池长度,从所述偏移量处进行异或加解密处理,且每加解密所述密钥流池长度,偏移量增加一倍大小,然后再进行循环异或加解密处理,具体的可参阅图10所示原理图。
[0118]
实施例四
[0119]
本实施例提供了一种基于密钥流池的实时加解密方法。图11是根据本技术实施例的基于密钥流池的实时加解密方法的流程图,如图11所示,该流程包括如下:
[0120]
步骤s310,取指定版本的密钥,以生成指定大小或长度的密钥流池。
[0121]
其中,具体步骤的实施可参阅实施例一的步骤s110,故在此不一一赘述。
[0122]
步骤s320,根据所述密钥流池长度为基准,对输入的数据流按照预定规则划分为n个数据块。
[0123]
其中,输入的待加解密的数据流data长度为len。
[0124]
步骤s330,计算第i个数据块的偏移量,并对第i个数据块进行数据块内循环异或处理,其中i《=n;循环处理所有数据块,得到加解密后的结果。
[0125]
步骤s340,对输入的数据流划分为n个数据块,使得划分的数据块加密数据长度小于密钥流池长度,则直接从数据块偏移量处进行异或加解密处理,超出所述密钥流池部分从所述密钥流池头部进行循环异或加解密处理。
[0126]
需要说明的是,在本发明的较佳实施例中,上述针对输入的数据流根据所述密钥流池长度为基准进行划分规则,可以使得被划分后的每个数据块加密数据长度小于密钥流池长度,则直接从数据块偏移量处进行异或加解密处理,超出所述密钥流池部分从所述密钥流池头部进行循环异或加解密处理。
[0127]
实施例五
[0128]
本实施例提供了一种基于密钥流池的实时加解密方法。图12是根据本技术实施例的基于密钥流池的实时加解密方法的流程图,如图12所示,该流程包括如下:
[0129]
步骤s410,取指定版本的密钥,以生成指定大小或长度的密钥流池。
[0130]
其中,具体步骤的实施可参阅实施例一的步骤s110,故在此不一一赘述。
[0131]
步骤s420,根据所述密钥流池长度为基准,对输入的数据流按照预定规则划分为n个数据块。
[0132]
其中,输入的待加解密的数据流data长度为len。
[0133]
步骤s430,计算第i个数据块的偏移量,并对第i个数据块进行数据块内循环异或处理,其中i《=n;循环处理所有数据块,得到加解密后的结果。
[0134]
步骤s440,对输入的数据流划分为n个数据块,使得划分的数据块加密数据所述第i个数据块加密数据长度等于密钥流池长度,直接从所述第i个数据块偏移量处进行循环异或加解密处理。
[0135]
需要说明的是,在本发明的较佳实施例中,上述针对输入的数据流根据所述密钥流池长度为基准进行划分规则,可以使得被划分后的每个数据块加密数据长度等于密钥流池长度,则直接从所述第i个数据块偏移量处进行循环异或加解密处理。
[0136]
实施例六
[0137]
本实施例提供了一种基于密钥流池的实时加解密方法。图13是根据本技术实施例的基于密钥流池的实时加解密方法的流程图,如图13所示,该流程包括如下步骤:
[0138]
步骤s1100,获取指定版本的密钥,以生成指定大小或长度的密钥流池。
[0139]
步骤s1200,接收加解密输入指令,以获取加解密数据。
[0140]
其中,输入的加解密以输入的加解密的长度为len的数据流data存在。
[0141]
步骤s1300,判断所述密钥流池长度是否不超过所述加解密数据长度。
[0142]
步骤s1400,若是,则以所述密钥流池长度为基准,将所述加解密数据流进行分块处理。
[0143]
其中,分块处理的具体方法是:把数据流data分为n块(n≥1),其中,每块的数据块以所述密钥流池长度为基准,采用分块算法n=(len size-1)/size公式进行分块,式中,len代表所述加解密数据长度,size代表所述秘钥流池长度。
[0144]
步骤s1500,计算可循环分块的次数i,并判断i≥1是否成立。
[0145]
其中,次数i的定义为所述加解密数据流进行分块数减1,诸如所述加解密数据流可分为10块,即为n为10,则可循环计数的次数i为9。
[0146]
步骤s1600,若是,则计算出第i块的所述数据块的偏移量,并从所述偏移量处进行异或加解密处理,且每加解密所述密钥流池长度,偏移量增加一倍大小,然后再进行循环异或加解密处理。具体的可参阅如下具体步骤:
[0147]
采用index=(start*i)%size公式,计算出所述第i块数据块的偏移量,式中,start表示所述第i块数据块异或加解密处理的开始位置,size表示所述密钥流池长度;
[0148]
采用res[i][j]=keys[(index j)%size]

data[i][j]公式,逐一对所述第i块数据块中的字节逐一进行异或加解密处理,获取所述第i块数据块的加解密结果res[i],式中,0<j<size,keys[(index j)%size]表示密钥流池的(index j)%size位置,data[i][j]表示数据第i块的第j个字节;
[0149]
循环采用上述步骤,逐一获取位于所述第i块数据块之后的数据块的加解密结果res[i 1]、res[i 2]、...、res[n];
[0150]
叠加获取的所有加解密结果,得到实时加解密处理的结果。
[0151]
通过上述步骤,通过带版本号密钥流池的循环偏移异或的实时加解密方法,其中,带版本的密钥流池解决了密钥更新与密文存储问题,循环偏移异或加解密方法提升加解密的实时性能与cpu运行效率,解决了相关技术中的加解密方法存在的加解密性能效果不佳,占用较长cpu时间给系统性能的消耗较大,以及无法真正实现实时加解密的技术问题,对比sm4的ctr加密模式或cbc加密模式,本方法的加解密速度是千倍以上,对cpu的时间消耗减少百倍。
[0152]
实施例七
[0153]
本实施例提供了一种基于密钥流池的实时加解密方法。图14是根据本技术实施例的基于密钥流池的实时加解密方法的流程图,如图14所示,该流程包括如下步骤:
[0154]
步骤s2100,获取指定版本的密钥,以生成指定大小或长度的密钥流池。
[0155]
其中,具体步骤的实施可参阅实施例一的步骤s101,故在此不一一赘述。
[0156]
步骤s2200,接收加解密输入指令,以获取加解密数据。
[0157]
其中,输入的加解密以输入的加解密的长度为len的数据流data存在。
[0158]
步骤s2300,判断所述密钥流池长度是否不超过所述加解密数据长度。
[0159]
步骤s2400,若否,直接从偏移量处进行异或加解密处理,超出所述密钥流池的部分所述加解密数据从所述密钥流池的端部进行循环异或加解密处理。
[0160]
实施例八
[0161]
本实施例提供了一种基于密钥流池的实时加解密方法。图15是根据本技术实施例的基于密钥流池的实时加解密方法的流程图,如图15所示,该流程包括如下步骤:
[0162]
步骤s3100,获取指定版本的密钥,以生成指定大小或长度的密钥流池。
[0163]
步骤s3200,接收加解密输入指令,以获取加解密数据。
[0164]
其中,输入的加解密以输入的加解密的长度为len的数据流data存在。
[0165]
步骤s3300,判断所述密钥流池长度是否不超过所述加解密数据长度。
[0166]
步骤s3400,若是,则以所述密钥流池长度为基准,将所述加解密数据流进行分块处理。
[0167]
其中,分块处理的具体方法是:把数据流data分为n块(n≥1),其中,每块的数据块以所述密钥流池长度为基准,采用分块算法n=(len size-1)/size公式进行分块,式中,len代表所述加解密数据长度,size代表所述密钥流池长度。
[0168]
步骤s3500,计算可循环分块的次数i,并判断i≥1是否成立。
[0169]
其中,次数i的定义为所述加解密数据流进行分块数减1,诸如所述加解密数据流可分为10块,即为n为10,则可循环计数的次数i为9。
[0170]
步骤s3600,若否,则直接从偏移量处进行循环异或加解密处理。
[0171]
实施例九
[0172]
另外,结合图16描述的本技术实施例基于密钥流池的实时加解密方法可以由计算机设备来实现。图16为根据本技术实施例的计算机设备的硬件结构示意图。
[0173]
计算机设备可以包括处理器41以及存储有计算机程序指令的存储器42。
[0174]
具体地,上述处理器41可以包括中央处理器(cpu),或者特定集成电路(application specific integrated circuit,简称为asic),或者可以被配置成实施本技术实施例的一个或多个集成电路。
[0175]
其中,存储器42可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器42可包括硬盘驱动器(hard disk drive,简称为hdd)、软盘驱动器、固态驱动器(solid state drive,简称为ssd)、闪存、光盘、磁光盘、磁带或通用串行总线(universal serial bus,简称为usb)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器42可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器42可在数据处理装置的内部或外部。在特定实施例中,存储器42是非易失性(non-volatile)存储器。在特定实施例中,存储器42包括只读存储器(read-only memory,简称为rom)和随机存取存储器(random access memory,简称为ram)。在合适的情况下,该rom可以是掩模编程的rom、可编程rom(programmable read-only memory,简称为prom)、可擦除prom(erasable programmable read-only memory,简称为eprom)、电可擦除prom(electrically erasable programmable read-only memory,简称为eeprom)、电可改写rom(electrically alterable read-only memory,简称为earom)或闪存(flash)或者两个或更多个以上这些的组合。在合适的情况下,该ram可以是静态随机存取存储器(static random-access memory,简称为sram)或动态随机存取存储器(dynamic random access memory,简称为dram),其中,dram可以是快速页模式动态随机存取存储器(fast page mode dynamic random access memory,简称为fpmdram)、扩展数据输出动态随机存取存储器(extended date out dynamic random access memory,简称为edodram)、同步动态随机存取内存(synchronous dynamic random-access memory,简称sdram)等。
[0176]
存储器42可以用来存储或者缓存需要处理和/或通信使用的各种数据文件,以及处理器42所执行的可能的计算机程序指令。
[0177]
处理器41通过读取并执行存储器42中存储的计算机程序指令,以实现上述实施例一、三、五中的任意一种基于密钥流池的实时加解密方法。
[0178]
在其中一些实施例中,计算机设备还可包括通信接口43和总线40。其中,如图16所示,处理器41、存储器42、通信接口43通过总线40连接并完成相互间的通信。
[0179]
通信接口43用于实现本技术实施例中各模块、装置、单元和/或设备之间的通信。通信接口43还可以实现与其他部件例如:外接设备、图像/数据采集设备、数据库、外部存储以及图像/数据处理工作站等之间进行数据通信。
[0180]
总线40包括硬件、软件或两者,将计算机设备的部件彼此耦接在一起。总线40包括但不限于以下至少之一:数据总线(data bus)、地址总线(address bus)、控制总线(control bus)、扩展总线(expansion bus)、局部总线(local bus)。举例来说而非限制,总线40可包括图形加速接口(accelerated graphics port,简称为agp)或其他图形总线、增强工业标准架构(extended industry standard architecture,简称为eisa)总线、前端总线(front side bus,简称为fsb)、超传输(hyper transport,简称为ht)互连、工业标准架构(industry standard architecture,简称为isa)总线、无线带宽(infiniband)互连、低引脚数(low pin count,简称为lpc)总线、存储器总线、微信道架构(micro channel architecture,简称为mca)总线、外围组件互连(peripheral component interconnect,简称为pci)总线、pci-express(pci-x)总线、串行高级技术附件(serial advanced technology attachment,简称为sata)总线、视频电子标准协会局部(video electronics standards association local bus,简称为vlb)总线或其他合适的总线或者两个或更多
个以上这些的组合。在合适的情况下,总线40可包括一个或多个总线。尽管本技术实施例描述和示出了特定的总线,但本技术考虑任何合适的总线或互连。
[0181]
该计算机设备可以基于获取到的基于密钥流池的实时加解密系统,执行本技术实施例中的基于密钥流池的实时加解密方法。
[0182]
另外,结合上述实施例中的基于密钥流池的实时加解密方法,本技术实施例可提供一种计算机存储介质来实现。该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例以、三、五中的任意一种基于密钥流池的实时加解密方法。
[0183]
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0184]
以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献