加密方法、装置、计算机设备和存储介质与流程

文档序号:16006857发布日期:2018-11-20 20:10阅读:150来源:国知局

本发明涉及信息安全等领域,尤其涉及一种加密方法、装置、计算机设备和存储介质。



背景技术:

客户关系管理系统(CRM)提供了创建和维护客户清晰概况所需的工具和能力,包括从第一次接触到购买和售后。对于复杂的组织,CRM系统可以提供帮助改善销售、市场营销、和/或客户服务组织发现新的客户目标、管理市场营销活动、以及驱动销售活动的特征和能力。

随着CRM解决方案的进步,实现了各种组合模式的通信,例如,即时消息收发、数据/应用共享、白板、以及可以与订户的在场以及可用性信息相结合的其它形式的通信。信息和数据的隐私安全成为最有价值的资产,各商业公司都会对自己系统内的数据读取做严格的信息保护,数据加密就是对信息进行保护的一种有效手段,能够阻止非授权用户的读取和传播。

然而,现有客户关系管理系统在客户消息交互过程中,存在的缺陷有非法绕开监管系统,直接读取未加密的客户消息,从而导致造成公司被投诉,客户流失。



技术实现要素:

有鉴于此,有必要针对消息交互过程中,因未加密导致数据的安全保护性不高的问题,提供一种加密方法、装置、计算机设备和存储介质。

一种加密方法,所述加密方法,包括以下步骤:获取待加密的消息,所述消息具有一串字符;利用轮密钥存储器随机打乱电路进行随机打乱,生成n个伪轮密钥和一个真实轮密钥,并记录下真实轮密钥的位置,以n个伪轮密钥和一个真实轮密钥组成轮密钥序列对所述字符串进行SMS4加密计算,得到所需密文。

在其中一个实施例中,所述获取待加密的消息,所述消息具有一串字符之后还包括:获取一个起始矩阵,根据寄存器号可以在相应的寄存器中获取矩阵起始地址和矩阵长度,再根据矩阵起始地址和矩阵长度在存储单元中获取相应地址存放的矩阵,该起始矩阵具有多列和多行,所述多行包括第一行和最后一行以及第一行与最后一行之间的中间行,以及最后一行中的所有列中的不同字符和所有其他行中的所有列中的不同数字,并且其中所述字符串中的每个字符对应于矩阵的列之一。

在其中一个实施例中,所述轮密钥序列具体通过以下方式得到:确定真实轮密钥执行的序号,而轮密钥序列中其它N个伪轮密钥通过轮密钥随机选取,从轮密钥存储器的存储区中选择得到。

在其中一个实施例中,所述SMS4加密计算是指将待加密的明文与轮密钥序列中的密钥依次进行轮函数迭代计算,具体为:

设明文输入为(X0,X1,X2,X3)∈(Z232)4,密文输出为(Y0,Y1,Y2,Y3)∈(Z232)4,轮密钥为rki∈Z232,i=0,1,2,…,31;则算法的加密变换为,

Xi+4=F(Xi,Xi+1,Xi+1,Xi+2,rki)=XiT(Xi+1Xi+2Xi+3rki),i=0,1,...,31;

(Y0,Y1,Y2,Y3)=R(X32,X33,X34,X35)=(X35,X34,X33,X32)。

在其中一个实施例中,所述利用轮密钥存储器随机打乱电路进行随机打乱,生成n个伪轮密钥和一个真实轮密钥,并记录下真实轮密钥的位置,以n个伪轮密钥和一个真实轮密钥组成轮密钥序列对所述字符串进行SMS4加密计算,得到所需密文之后还包括使用加密时用过的密钥及相同算法的逆算法对密文进行解密,使其恢复成可读明文。

在其中一个实施例中,所述轮密钥存储器的存储区的初始状态为隐藏状态。

一种加密装置,所述加密装置包括:获取单元,用于获取待加密的消息,所述消息具有一串字符;加密单元,用于利用轮密钥存储器随机打乱电路进行随机打乱,生成n个伪轮密钥和一个真实轮密钥,并记录下真实轮密钥的位置,以n个伪轮密钥和一个真实轮密钥组成轮密钥序列对所述字符串进行SMS4加密计算,得到所需密文。

在其中一个实施例中,所述获取单元还用于获取一个起始矩阵,根据寄存器号可以在相应的寄存器中获取矩阵起始地址和矩阵长度,再根据矩阵起始地址和矩阵长度在存储单元中获取相应地址存放的矩阵,该起始矩阵具有多列和多行,所述多行包括第一行和最后一行以及第一行与最后一行之间的中间行,以及最后一行中的所有列中的不同字符和所有其他行中的所有列中的不同数字,并且其中所述字符串中的每个字符对应于矩阵的列之一;所述加密单元还用于确定真实轮密钥执行的序号,而轮密钥序列中其它N个伪轮密钥通过轮密钥随机选取,从轮密钥存储器的存储区中选择得到。

一种计算机设备,,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行上述加密方法的步骤。

一种存储有计算机可读指令的存储介质,其特征在于,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述加密方法的步骤。

上述加密方法、装置、计算机设备和存储介质,通过获取待加密的消息,所述消息具有一串字符,获取一个起始矩阵,根据寄存器号可以在相应的寄存器中获取矩阵起始地址和矩阵长度,再根据矩阵起始地址和矩阵长度在存储单元中获取相应地址存放的矩阵,该起始矩阵具有多列和多行,所述多行包括第一行和最后一行以及第一行与最后一行之间的中间行,以及最后一行中的所有列中的不同字符和所有其他行中的所有列中的不同数字,并且其中所述字符串中的每个字符对应于矩阵的列之一。利用轮密钥存储器随机打乱电路进行随机打乱,生成n个伪轮密钥和一个真实轮密钥,并记录下真实轮密钥的位置,以n个伪轮密钥和一个真实轮密钥组成轮密钥序列对所述字符串进行SMS4加密计算,所述轮密钥序列具体通过以下方式得到:确定真实轮密钥执行的序号,而轮密钥序列中其它N个伪轮密钥通过轮密钥随机选取,从轮密钥存储器的存储区中选择得到,所述SMS4加密计算是指将待加密的明文与轮密钥序列中的密钥依次进行轮函数迭代计算,得到所需密文,算法计算量小,加密速度快且加密效率高,使用长密钥时的难破解,同时具有高性能、高安全性、高可靠性,弥补了现有技术在安全性上的不足。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。

图1为本发明一个实施例中提供的加密方法的流程图;

图2A为本发明一个实施例中编码矩阵示意图;

图2B为本发明一个实施例中编码矩阵示意图;

图3为一个实施例中加密装置的结构框图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。

作为一个较好的实施例,如图1所示,一种加密方法,该加密方法包括以下步骤:

步骤S101,获取待加密的消息,消息具有一串字符;

获取要加密的消息,将消息数据转换为内容字符串。

步骤S102,利用轮密钥存储器随机打乱电路进行随机打乱,生成n个伪轮密钥和一个真实轮密钥,并记录下真实轮密钥的位置,以n个伪轮密钥和一个真实轮密钥组成轮密钥序列对字符串进行SMS4加密计算,得到所需密文。

通过密钥随机选取电路(或软件即软件调用模式实现)或通过密钥存储器随机打乱机构从密钥存储器中选择得到,n个伪轮密钥和一个真实轮密钥,并记录下真实轮密钥的位置,以n个伪轮密钥和一个真实轮密钥组成轮密钥序列对所述字符串进行SMS4加密计算,得到所需密文。首先需要保存n个伪轮密钥,这些伪轮密钥需要具有以下特点:伪轮密钥对应的每个字节是不同的,这个用来保证针对某个S盒的伪轮密钥是不一样的,S盒为固定的8比特输入8比特输出的置换,记为Sbox(.),每次加密开始,把n个伪轮密钥和一个真实的轮密钥放在一起然后利用轮密钥存储器随机打乱电路进行随机打乱,记录下真实轮密钥的位置,即真实轮密钥执行的时刻,然后依次根据随机打乱的轮密钥开始执行n次轮函数,每次轮函数的结果都要进行保存,然后取真实的轮函数结果进入下一轮继续执行之后的运算。

在一个实施例中,获取待加密的消息,消息具有一串字符之后还包括:获取一个起始矩阵,根据寄存器号可以在相应的寄存器中获取矩阵起始地址和矩阵长度,再根据矩阵起始地址和矩阵长度在存储单元中获取相应地址存放的矩阵,该起始矩阵具有多列和多行,多行包括第一行和最后一行以及第一行与最后一行之间的中间行,其中最后一行中的所有列中的不同字符和所有其他行中的所有列中的不同数字,并且其中字符串中的每个字符对应于矩阵的列之一。

要获取一个矩阵时,根据寄存器号可以在相应的寄存器中获取矩阵起始地址和矩阵长度,再根据矩阵起始地址和矩阵长度在存储单元中获取相应地址存放的矩阵。矩阵运算指令包括一操作码和至少一操作域,其中,操作码用于指示该矩阵运算指令的功能,矩阵运算单元通过识别该操作码可进行不同的矩阵运算,操作域用于指示该矩阵运算指令的数据信息,其中,数据信息可以是立即数或寄存器号。编码基于矩阵变换,在优选加密过程中,当使用矩阵内的字母时,从矩阵中的每个对应的值队列中除去与这些字母相关联的数字,直到队列为空。例如,如图2A和图2B所示,用的编码矩阵图,临时队列可以适合任何大小的队列。队列大小的最坏情况将是((矩阵-1中的行数)*(每行中值的数量))+1,使用这种方法,所有字符都可以被编码,包括ASCII、国标字符集和信息编码。

在一个实施例中,轮密钥序列具体通过以下方式得到:确定真实轮密钥执行的序号,而轮密钥序列中其它N个伪轮密钥通过轮密钥随机选取,从轮密钥存储器的存储区中选择得到。

首先需要保存n个伪轮密钥,这些伪轮密钥具有下述特点,伪轮密钥对应的每个字节是不同的,这个用来保证针对某个S盒的伪轮密钥是不一样的,S盒为固定的8比特输入8比特输出的置换,记为Sbox(.)。每一次加密开始,把n个伪轮密钥和一个真实的轮密钥放在一起然后利用轮密钥存储器随机打乱电路进行随机打乱,记录下真实轮密钥的位置,即为真实轮密钥执行的时刻。然后依次根据随机打乱的轮密钥开始执行n次轮函数,每次轮函数的结果都要进行保存,然后得到真实的轮函数的结果。

在一个实施例中,SMS4加密计算是指将待加密的明文与轮密钥序列中的密钥依次进行轮函数迭代计算,具体为:

设明文输入为(X0,X1,X2,X3)∈(Z232)4,密文输出为(Y0,Y1,Y2,Y3)∈(Z232)4,轮密钥为rki∈Z232,i=0,1,2,…,31;则算法的加密变换为,

Xi+4=F(Xi,Xi+1,Xi+1,Xi+2,rki)=Xi T(Xi+1 Xi+2 Xi+3rki),i=0,1,...,31;

(Y0,Y1,Y2,Y3)=R(X32,X33,X34,X35)=(X35,X34,X33,X32)。

SM4分组密码算法,该算法为对称算法,密钥长度和分组长度均为128位,加密算法与密钥扩展算法都采用32轮非线性迭代结构。解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。

设明文输入为(X0,X1,X2,X3)∈(Z232)4,密文输出为(Y0,Y1,Y2,Y3)∈(Z232)4,轮密钥为rki∈Z232,i=0,1,2,…,31;则算法的加密变换为,

Xi+4=F(Xi,Xi+1,Xi+1,Xi+2,rki)=Xi T(Xi+1 Xi+2 Xi+3rki),i=0,1,...,31;

(Y0,Y1,Y2,Y3)=R(X32,X33,X34,X35)=(X35,X34,X33,X32)。

本算法的解密变换与加密变换结构相同,不同的仅是轮密钥的使用顺序。

加密时轮密钥的使用顺序为:(rk0,rk1,…,rk31)

解密时轮密钥的使用顺序为:(rk31,rk30,…,rk0)

举例说明,对一组明文用密钥加密一次

明文:01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10

加密密钥:01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10

轮密钥与每轮输出状态:

rk[0]=f12186f9 X[0]=27fad345

rk[1]=41662b61 X[1]=a18b4cb2

rk[2]=5a6ab19a X[2]=11c1e22a

rk[3]=7ba92077 X[3]=cc13e2ee

rk[4]=367360f4 X[4]=f87c5bd5

rk[5]=776a0c61 X[5]=33220757

rk[6]=b6bb89b3 X[6]=77f4c297

rk[7]=24763151 X[7]=7a96f2eb

rk[8]=a520307c X[8]=27dac07f

rk[9]=b7584dbd X[9]=42dd0f19

rk[10]=c30753ed X[10]=b8a5da02

rk[11]=7ee55b57 X[11]=907127fa

rk[12]=6988608c X[12]=8b952b83

rk[13]=30d895b7 X[13]=d42b7c59

rk[14]=44ba14af X[14]=2ffc5831

rk[15]=104495a1 X[15]=f69e6888

rk[16]=d120b428 X[16]=af2432c4

rk[17]=73b55fa3 X[17]=ed1ec85e

rk[18]=cc874966 X[18]=55a3ba22

rk[19]=92244439 X[19]=124b18aa

rk[20]=e89e641f X[20]=6ae7725f

rk[21]=98ca015a X[21]=f4cba1f9

rk[22]=c7159060 X[22]=1dcdfa10

rk[23]=99e1fd2e X[23]=2ff60603

rk[24]=b79bd80c X[24]=eff24fdc

rk[25]=1d2115b0 X[25]=6fe46b75

rk[26]=0e228aeb X[26]=893450ad

rk[27]=f1780c81 X[27]=7b938f4c

rk[28]=428d3654 X[28]=536e4246

rk[29]=62293496 X[29]=86b3e94f

rk[30]=01cf72e5 X[30]=d206965e

rk[31]=9124a012 X[31]=681edf34

在一个实施例中,利用轮密钥存储器随机打乱电路进行随机打乱,生成n个伪轮密钥和一个真实轮密钥,并记录下真实轮密钥的位置,以n个伪轮密钥和一个真实轮密钥组成轮密钥序列对字符串进行SMS4加密计算,得到所需密文之后还包括使用加密时用过的密钥及相同算法的逆算法对密文进行解密,使其恢复成可读明文。

需要说明的是,对称加密算法指的是加密和解密使用相同密钥的加密算法,算法是一组规则,规定如何进行加密和解密。在大多数的对称加密算法中,加密密钥和解密密钥是相同的。它要求发送方和接收方在安全通信之前,商定一个密钥。在对称加密算法中,数据发送方将明文(即原始数据)与加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。接收方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。

在一个实施例中,轮密钥存储器的存储区的初始状态为隐藏状态。

轮密钥存储器的存储区的初始状态为隐藏状态,解决了相关技术中对存储装置中数据的保护安全性不够高的问题,进而达到了提高存储装置中数据保护的安全性的效果。

如图3所示,在一个实施例中,提供一种加密装置,该加密装置包括:

获取单元,用于获取待加密的消息,消息具有一串字符;

加密单元,用于利用轮密钥存储器随机打乱电路进行随机打乱,生成n个伪轮密钥和一个真实轮密钥,并记录下真实轮密钥的位置,以n个伪轮密钥和一个真实轮密钥组成轮密钥序列对字符串进行SMS4加密计算,得到所需密文。

在一个实施例中,获取单元还用于获取一个起始矩阵,根据寄存器号可以在相应的寄存器中获取矩阵起始地址和矩阵长度,再根据矩阵起始地址和矩阵长度在存储单元中获取相应地址存放的矩阵,该起始矩阵具有多列和多行,多行包括第一行和最后一行以及第一行与最后一行之间的中间行,以及最后一行中的所有列中的不同字符和所有其他行中的所有列中的不同数字,并且其中字符串中的每个字符对应于矩阵的列之一;加密单元还用于确定真实轮密钥执行的序号Q,而轮密钥序列中其它N个伪轮密钥通过轮密钥随机选取电路从轮密钥存储器的存储区中选择得到。

在一个实施例中,提出了一种计算机设备,所述计算机设备包括存储器和处理器,存储器中存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行所述计算机程序时实现上述各实施例中加密方法的步骤。

在一个实施例中,提出了一种存储有计算机可读指令的存储介质,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述各实施例中加密方法的步骤。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁盘或光盘等。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明一些示例性实施例,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

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