数据加/解密校验方法及其系统的制作方法

文档序号:7942238阅读:313来源:国知局
专利名称:数据加/解密校验方法及其系统的制作方法
技术领域
本发明涉及到数据处理技术领域,特别涉及到数据加/解密校验方法及其系统。
背景技术
目前,用于数据传输和存储过程的加密方法,主要是采用分组加密算法,如AES、 DES、SM1等,对数据进行加密变换,形成密文后再进行传输或存储。这种方法可以隐藏原有数据,满足保护数据私密性的需求。但是,这种加密方法未对数据进行校验,如果数据在传输和存储过程中出现错误或被恶意篡改,这种加密方法并不能识别,导致解密处理出来的数据与原有数据不相同的错误情况。为解决上述问题,现有的方法是除了对数据进行加密变换之外,增加一段校验码, 其技术方案是采用分组加密算法,一方面对数据进行加密变换,形成密文,另一方面通过分组加密算法计算原有数据的校验码,并将校验码与原有数据共同传输或共同存储。虽然这种方法能够在数据传输和存储过程中,通过接收者或使用者根据校验码来判断接收到的数据是否和原有数据不一致,即判断数据加密或解密过程中是否出现错误或被恶意篡改,但是这种在加密变换之外增加校验码的方法,其缺点是需要对数据进行两轮分组密码运算, 一轮用于数据加密变换,另一轮用于计算校验码。由于分组密码运算需要耗费大量的计算能力,这种方法将成倍地增加计算开销,所以在应用于高速网络传输和海量数据存储时,将极大地降低传输和存储性能,成为系统的瓶颈。

发明内容
本发明的主要目的为提供一种可有效提高数据加/解密及校验效率的数据加/解密校验方法及其系统。本发明提出一种数据加/解密校验方法,包括步骤加密装置对加密端明文数据Plain中各数据段进行异或操作,获得校验码Mac,合并所述加密端明文数据Plain和校验码Mac,获得合并数据Data,加密所述合并数据Data, 获得密文Cipher,并输出到解密端;解密装置解密接收到的所述密文Cipher,获得解密数据Data',从所述解密数据 Data'中分离出解密端明文数据Plain'和所述校验码Mac,并对所述校验码Mac进行校验。优选地,所述对加密端明文数据Plain中各数据段进行异或操作,获得校验码Mac 具体包括将加密端明文数据Plain按照预设的分组长度L划分为多个加密端明文数据段 Pj,其中 j = 1、2........m;确定所述校验码Mac=P1 θ P2 @ P3 @ ...... Pm.! Pm,其中@为异或操作。 优选地,所述确定校验码Mac=P1 P2 P3 ...... Pm-i Pm之前还包括 当第m个加密端明文数据段Pm的长度小于所述分组长度L时,在所述第m个加密端明文数据段Pm中补0,使其长度为所述分组长度L。优选地,所述对校验码Mac进行校验具体包括解密装置对所述解密端明文数据Plain'中各数据段进行异或操作,确定验证码 M';判断所述验证码M'是否与所述校验码Mac相同;如果是,则判定校验成功,所述解密端明文数据Plain'与加密端明文数据Plain 相同;如果否,则判定校验失败,所述解密端明文数据Plain'与加密端明文数据Plain 不同。优选地,所述解密装置对解密端明文数据Plain'中各数据段进行异或操作,确定验证码M'具体包括将解密端明文数据Plain'按照预设的分组长度L划分为多个解密端明文数据段 Pj',其中 j = 1、2........m;确定所述验证码M' =P1' P2' ...... θΡη,.1' θΡη/,其中 @ 为异
或操作。优选地,所述确定所述验证码M' =P1' Ρ2' ...... θΡη,,ι' Pm'
之前还包括当第m个解密端明文数据段P/的长度小于所述分组长度L时,在所述第m个解密端明文数据段P/中补0,使其长度为所述分组长度L。优选地,所述加密合并数据Data,获得密文Cipher具体包括将所述合并数据Data按照预设的分组长度L划分为多个加密端分组数据段Di,其中 i = 1、2、......、n ;定义加密端密文数据段Ci,令初始加密端密文数据段Ctl = IV,其中,IV为长度为所述分组长度L的预设随机数;对当前加密端分组数据段Di与前一加密端密文数据段C^1进行异或操作;以预设的密钥K作为密钥,按照预设的分组密码算法对D1 C^1进行加密,得到加密端密文数据SC1=Eiick (D1 @ C,ι),其中@为异或操作;将各加密端密文数据段Q、C2........Cn依次串接,构成所述密文Cipher。优选地,所述解密装置解密接收到的所述密文Cipher,获得解密数据Data'具体包括将所述密文Cipher按照预设的分组长度L划分为多个解密端密文数据段Ci',其中 i = 1、2、......、n ;定义初始解密端密文数据段Cc/ = IV,其中,IV为长度为所述分组长度L的预设随机数;以预设的密钥K作为密钥,按照预设的分组密码算法分别对所述解密端密文数据段Ci'进行解密,获得解密数据段DecK (Ci');对当前解密数据段DecK((V )与前一解密端密文数据段C^1 ‘进行异或操作,获得解密端分组数据段D/ =DecK(CV) Q.i';将各解密端分组数据段D/ ,D2'、!V ........Dn'依次串接,构成所述解密数M Data' ο本发明还提出一种数据加/解密校验系统,包括加密装置和解密装置,所述加密装置具体包括校验码生成模块,用于对加密端明文数据Plain中各数据段进行异或操作,获得校验码Mac ;加密模块,用于合并所述加密端明文数据Plain和校验码Mac,获得合并数据 Data,加密所述合并数据Data,获得密文Cipher,并输出到解密端;所述解密装置具体包括解密模块,用于解密接收到的所述密文Cipher,获得解密数据Data',从所述解密数据Data'中分离出解密端明文数据Plain'和所述校验码Mac ;校验模块,用于对所述校验码Mac进行校验。优选地,所述校验码生成模块具体用于将加密端明文数据Plain按照预设的分组长度L划分为多个加密端明文数据段 Pj,其中 j = 1、2........m;确定所述校验码Mac=P1 θ P2 @ P3 @ ...... Pm4 Pm,其中@为异或操作。优选地,所述校验码生成模块具体还用于当第m个加密端明文数据段Pm的长度小于所述分组长度L时,在所述第m个加密端明文数据段Pm中补0,使其长度为所述分组长度L。优选地,所述校验模块具体包括验证码生成子模块,用于对所述解密端明文数据Plain'中各数据段进行异或操作,确定验证码M';校验判断子模块,用于判断所述验证码M'是否与所述校验码Mac相同;如果是, 则判定校验成功,所述解密端明文数据Plain'与加密端明文数据Plain相同;如果否,则判定校验失败,所述解密端明文数据Plain'与加密端明文数据Plain不同。优选地,所述验证码生成子模块具体用于将解密端明文数据Plain'按照预设的分组长度L划分为多个解密端明文数据段 Pj',其中 j = 1、2........m;确定所述验证码M' =P1' P2' P3' ......SPm./ θΡη/,其中 @ 为异
或操作。所述验证码生成子模块具体用于当第m个解密端明文数据段P/的长度小于所述分组长度L时,在所述第m个解密端明文数据段P/中补0,使其长度为所述分组长度L。优选地,所述加密模块具体用于将所述合并数据Data按照预设的分组长度L划分为多个加密端分组数据段Di,其中 i = 1、2、......、n ;定义加密端密文数据段Ci,令初始加密端密文数据段Ctl = IV,其中,IV为长度为所述分组长度L的预设随机数;对当前加密端分组数据段Di与前一加密端密文数据段C^1进行异或操作;以预设的密钥K作为密钥,按照预设的分组密码算法对D1 C^1进行加密,得到加密端密文数据段C1=Eiick (D1 C,i),其中@为异或操作;将各加密端密文数据段Q、C2........Cn依次串接,构成所述密文Cipher。优选地,所述解密模块具体用于将所述密文Cipher按照预设的分组长度L划分为多个解密端密文数据段Ci',其中 i = 1、2、......、n ;定义初始解密端密文数据段Cc/ = IV,其中,IV为长度为所述分组长度L的预设随机数;以预设的密钥K作为密钥,按照预设的分组密码算法分别对所述解密端密文数据段Ci'进行解密,获得解密数据段DecK (Ci');对当前解密数据段DecK((V )与前一解密端密文数据段C^1 ‘进行异或操作,获得解密端分组数据段D/ =DecK(CV) Q.i';将各解密端分组数据段D/ ,D2'、!V ........Dn'依次串接,构成所述解密数
Data' ο本发明通过简单的异或操作生成校验码Mac,仅采用一次加密变换即完成数据加密,避免了因采用加密变换获得校验码Mac而造成成倍增加计算开销,减少了加密变换次数,有效提高加/解密效率;通过对校验码Mac的正确性进行校验,可检测加/解密数据在加密或解密、传输或存储过程中是否出现错误或是否被恶意篡改,在确保数据的私密性同时,也保证了数据的正确性。


图1为本发明一实施例中数据加/解密校验方法的流程图; 图2为图1所示数据加/解密校验方法中生成校验码步骤的流程图; 图3为图1所示数据加/解密校验方法中数据加密步骤的一实施方案的流程4为图1所示数据加/解密校验方法中数据加密步骤的另一实施方案的流程
图5为本发明一实施例的数据加/解密校验方法中加密装置处理数据的示意6为图1所示数据加/解密校验方法中数据解密步骤的一实施方案的流程图
η
图7为图1所示数据加
图8为图1所示数据加, 图9为图8所示数据加,
‘解密校验方法中数据解密步骤的另一实施方案的流程
解密校验方法中校验码校验步骤的流程图; 解密校验方法中生成验证码步骤的流程图; 图10为本发明另一实施例的数据加/解密校验方法中解密装置处理数据的示意
图11为本发明一实施例中数据加/解密校验系统的结构示意图; 图12为本发明一实施例的数据加/解密校验系统中校验模块的结构示意图。 本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施例方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1为本发明一实施例中数据加/解密校验方法的流程图,该发明实施例提到的数据加/解密校验方法,包括步骤步骤S10,加密装置对加密端明文数据Plain中各数据段进行异或操作,获得校验码 Mac ο本实施例中,校验码Mac的生成在加密端进行,由设置于加密端计算机PC中的加密装置执行异或操作生成校验码Mac,由于异或操作简单且处理时间快,获得的校验码Mac 同样能够检测出数据的正确性与完整性,避免了因采用加密变换获得校验码Mac而造成成倍增加计算开销,有效提高了校验码生成效率。此外,当本发明实施例应用于网络传输场合中时,加密端为数据发送方PC;当本发明实施例应用于文件存储场合中时,加密端为文件写入方PC。步骤S20,加密装置合并加密端明文数据Plain和校验码Mac,获得合并数据 Data ;本实施例中加密端明文数据Plain和校验码Mac均为二进制码流,合并后的合并数据Data也为二进制码流。合并时,加密装置将校验码Mac串接在加密端明文数据Plain 后方,获得合并数据Data,以便于解密后分离出校验码Mac。此外,加密装置也可以采用其他方式合并,例如,将校验码Mac插入到加密端明文数据Plain中预设的指定位,解密时从指定位开始分离校验码Mac。步骤S30,加密装置加密合并数据Data,获得密文Cipher,并输出到解密端;本实施例在加密装置执行加密变换的过程中,因校验码Mac的生成是通过简单的异或操作获得,因此在加密时只对由加密端明文数据Plain和校验码Mac构成的合并数据 Data进行一次加密变换处理,即可获得密文,达到保护数据私密性的目的,避免了因采用加密变换获得校验码Mac而造成成倍增加计算开销,减少了加密变换次数,有效提高了数据加密及传输效率。步骤S40,解密装置解密接收到的密文Cipher,获得解密数据Data';本实施例通过设置于解密端计算机PC中的解密装置完成解密过程,解密装置解密时,只需对密文Cipher进行一次解密变换处理,即可完成解密操作,有效提高了数据解密效率。此外,当本发明实施例应用于网络传输场合中时,解密端为数据接收方PC;当本发明实施例应用于文件存储场合中时,解密端为文件读取方PC。步骤S50,解密装置从解密数据Data'中分离出解密端明文数据Plain'和校验码 Mac ;本实施例中,由解密装置解密后的解密数据Data'为二进制码流。如果加密装置获得合并数据Data时采用将校验码Mac串接在加密端明文数据Plain后方的合并方式,则解密装置分离解密数据Data'时,从解密数据Data'的尾部获取与校验码Mac长度相同的数据段,即为校验码Mac,其余部分即为解密端明文数据Plain'。如果加密装置获得合并数据Data时采用其他方式,例如,将校验码Mac插入到加密端明文数据Plain中预设的指定位,则解密装置解密时从指定位开始获取与校验码Mac长度相同的数据段,即为校验码 Mac,其余部分即为解密端明文数据Plain'。步骤S60,解密装置对校验码Mac进行校验。本实施例通过解密装置对校验码Mac的正确性进行校验,可检测加/解密数据在加密或解密、传输或存储过程中是否出现错误或是否被恶意篡改,在确保数据的私密性同时,也保证了数据的正确性。如图2所示,图2为图1所示数据加/解密校验方法中生成校验码步骤的流程图。 步骤SlO具体包括步骤S11,将加密端明文数据Plain按照预设的分组长度L划分为多个加密端明文数据段P」,其中j = 1、2........m;本实施例中分组长度L为加密端和解密端预先协商好的参数,分组后各加密端明文数据段Pj的长度为分组长度L,经过异或操作获得的校验码Mac的长度也为分组长度L。步骤S12,确定校验码Mac =P1 θ P2 @ P3 @......@ Pw Pm,其中@为异或操作。本实施例将分段后的数据进行异或,如果加密端明文数据Plain长度不为分组长度L的整数倍,此时加密端明文数据Plain最尾部一段数据,即第m个加密端明文数据段Pm的长度则会小于分组长度L,那么在采用异或操作计算校验码Mac时,在Pm中补充0, 使其长度为分组长度L,例如Pm = ( , a2, a3, a4, a5), Pm-i = (b” b2, b3, b4, b5, b6, b7, b8), Pm 比 Pnri 少 313行,在卩 1 中补充 0,令卩 1 = (B1, a2,a3,a4,a5,0,0,0),由于y @ 0=y,故 Pw @ Pm= ( ai @ bi, Sl2 b2, a3 b3, a4 b4, a5 b5, b6, b7, b8)。此外 0 还可以补充在Pm'中指定的位置。本实施例采用较简单的异或操作获得校验码Mac,由于异或操作的处理时间快,且获得的校验码Mac同样能够检测出数据的正确性与完整性,避免了因采用加密变换获得校验码Mac而造成成倍增加计算开销,有效提高了校验码生成效率。如图3所示,图3为图1所示数据加/解密校验方法中数据加密步骤的一实施方案的流程图。步骤S30具体包括步骤S31,将合并数据Data按照预设的分组长度L划分为多个加密端分组数据段 Di,其中 i = 1、2、......、n ;步骤S32,定义加密端密文数据段Ci,令初始加密端密文数据段Ctl = IV,其中,IV 为长度为分组长度L的预设随机数;本实施例中预设随机数IV为加密端和解密端预先协商好的参数,因本实施例中各数据段均以分组长度L作为单位长度,且各数据段均为二进制码流,为便于计算,预设随机数IV也规定为二进制码流,其长度也为分组长度L。步骤S33,对当前加密端分组数据段Di与前一加密端密文数据段C^1进行异或操作;步骤S34,以预设的密钥K作为密钥,按照预设的分组密码算法对D1 C1^进行加密,得到加密端密文数据段C1=Eiick ( D1 C1.!),其中@为异或操作;本实施例中密钥K和分组密码算法为加密端和解密端预先协商好的参数,各加密
端分组数据段Dp A........Dn和初始加密端密文数据段Ctl为已知,则各加密端密文数据
段C1=Eiick (D1 C。)、C2=EncK (D2 C1)........Cn=EncK (Dn Cn.i )。步骤S35,将各加密端密文数据段Q、C2........Cn依次串接,构成密文Cipher。本实施例中校验码Mac的生成是通过简单的异或操作获得,因此在加密时只需采用一次加密变换,对由加密端明文数据Plain和校验码Mac构成的合并数据Data进行加密,即可达到保护数据私密性的目的,减少了加密变换次数,避免成倍增加计算开销,有效
1提高加密效率。如图4所示,图4为图1所示数据加/解密校验方法中数据加密步骤的另一实施方案的流程图。步骤S31之前还包括步骤S36,当合并数据Data的长度小于分组长度L的整数倍时,在合并数据Data 中添加填充数据,使其长度为分组长度L的整数倍。本实施例中,如果加密端明文数据Plain长度不为分组长度L的整数倍,则由加密端明文数据Plain和校验码Mac构成的合并数据Data的长度也不为分组长度L的整数倍。为方便计算,需填充合并数据Data,例如,分组长度L为8bit,合并数据Data的长度为 ^bit,则应增加6bit或(6+8x)bit的填充数据,使其长度为Sbit的整数倍,其中χ为正整数。填充数据可以添加在合并数据Data的后方,也可添加在合并数据Data中指定位置。如图5所示,图5为本发明一实施例的数据加/解密校验方法中加密装置处理数据的示意图。本实施例通过加密装置进行简单的异或操作生成校验码Mac,并将校验码Mac串接在加密端明文数据Plain后方,仅采用一次加密变换即完成数据加密,生成密文Cipher, 避免了因采用加密变换获得校验码Mac而造成成倍增加计算开销,减少了加密变换次数, 有效提高加密效率。如图6所示,图6为图1所示数据加/解密校验方法中数据解密步骤的一实施方案的流程图。步骤S40具体包括步骤S41,将密文Cipher按照预设的分组长度L划分为多个解密端密文数据段 Ci',其中 i = 1、2、......、n ;步骤S42,定义初始解密端密文数据段Cc/ = IV,其中,IV为长度为分组长度L的预设随机数;步骤S43,以预设的密钥K作为密钥,按照预设的分组密码算法分别对解密端密文数据段Ci'进行解密,获得解密数据段DecK (C/ );本实施例中,解密端的分组长度L、预设随机数IV、密钥K和分组密码算法与上述加密端的分组长度L、预设随机数IV、密钥K和分组密码算法一致,均为加密端和解密端预先协商好的参数。步骤S44,对当前解密数据段DecK((V )与前一解密端密文数据段Ci. 操作,获得解密端分组数据段0/ =DeCK(CV) Q.i';本实施例中各解密端密文数据段C1' ,C2'、C3' ........Cn'
密端密文数据段C/为已知,则各解密端分组数据段D/ = DecK ( C D2' =DecK (C2' ) Cl'........ D1/ = DecK (Cn' ) Cn·!'。步骤S45,将各解密端分组数据段D1' ,D2'、!V ........Dn'依次串接,构成解
密数据Data'。本实施例解密时只需采用一次解密变换,即可完成对密文Cipher的解密,减少了解密变换次数,避免成倍增加计算开销,有效提高解密效率。如图7所示,图7为图1所示数据加/解密校验方法中数据解密步骤的另一实施方案的流程图。步骤S45之后还包括步骤S46,当解密数据Data'中包含填充数据时,去除填充数据。
/进行异或
和初始解 ) CV、
本实施例中,如果加密时在合并数据Data中添加了填充数据,则在解密时,需要去除填充数据,以确保从解密数据Data'中分理出的数据正确。如果填充数据添加在合并数据Data的后方,则在解密时去除解密数据Data'的尾部与填充数据长度一致的数据段, 例如,解密数据Data'的长度为32bit,填充数据长度为6bit,去除解密数据Data'尾部 6bit的数据段,剩余^bit即为待分离的数据。如果填充数据添加在合并数据Data中的指定位置,则从解密数据Data'的指定位置开始去除与填充数据长度一致的数据段。如图8所示,图8为图1所示数据加/解密校验方法中校验码校验步骤的流程图。 步骤S60具体包括步骤S61,解密装置对解密端明文数据Plain'中各数据段进行异或操作,确定验证码M';步骤S62,判断验证码M'是否与校验码Mac相同;如果是,则执行步骤S63 ;如果否,则执行步骤S64;步骤S63,判定校验成功,解密端明文数据Plain'与加密端明文数据Plain相同;步骤S64,判定校验失败,解密端明文数据Plain'与加密端明文数据Plain不同。本实施例采用较简单的异或操作获得验证码M',由于异或操作的处理时间快,避免了因采用加密变换获得证码M'而造成成倍增加计算开销,有效提高了校验码生成效率。 同时,通过比较由解密端明文数据Plain'生成的验证码M'与由加密端明文数据Plain生成的校验码Mac是否一致,以判断解密端明文数据Plain'是否与加密端明文数据Plain相同,可检测加/解密数据在加密或解密、传输或存储过程中是否出现错误或是否被恶意篡改,保证了数据的正确性。如图9所示,图9为图8所示数据加/解密校验方法中生成验证码步骤的流程图。 步骤S61具体包括步骤S611,将解密端明文数据Plain'按照预设的分组长度L划分为多个解密端明文数据段P/,其中j = l、2........m;步骤S612,确定验证码 M' =P1' P2' ......SPm.!' θΡπ/,其中 @
为异或操作。本实施例对各分组后的数据段进行异或操作,如果解密端明文数据 Plain'长度不为分组长度L的整数倍,此时解密端明文数据Plain'最尾部一段数据,即第m个解密端明文数据段Pm'的长度则会小于分组长度L,那么在采用异或操作计算验证码M'时,在Pm'中补充0,使其长度为分组长度L,例如Pm' —(^1 ‘ j a2 ? ,‘ j ),Pm-I ‘ — (bi ‘,b2 ‘,b3 ‘,b4 ‘,b5 ‘,b6 ‘, b7 ‘,b8 ‘ ),Pm ‘比 Pnrl ‘少 3bit,在 Pm ‘尾部补充 0,令 Pm ‘ = (B1 ‘ , a2 ‘, B3 ‘ , B4 ‘ , B5 ‘ ,0,0,0),由于 y 0=y,故 PmY @Pm‘ = (ai' bi' , a2' Sb2' , a3' b/, a/ Sb4' , a5' bs' , W , b/, IV )。此外 0 还可以补充在 Pffl'中指定的位置。本实施例采用较简单的异或操作获得验证码M',有效提高校验效率。如图10所示,图10为本发明另一实施例的数据加/解密校验方法中解密装置处理数据的示意图。本实施例中,解密装置采用较简单的异或操作获得验证码M',避免了因采用加密变换获得证码M'而造成成倍增加计算开销,有效提高了校验码生成效率。同时,在解密时只需采用一次解密变换,即可完成对密文Cipher的解密,减少了解密变换次数,避免成倍增加计算开销,有效提高解密效率。如图11所示,图11为本发明一实施例中数据加/解密校验系统的结构示意图, 该发明实施例提到的数据加/解密校验系统,包括加密装置100和解密装置200,加密装置 100具体包括校验码生成模块10,用于对加密端明文数据Plain中各数据段进行异或操作,获得校验码Mac。加密模块20,用于合并加密端明文数据Plain和校验码Mac,获得合并数据Data, 加密合并数据Data,获得密文Cipher,并输出到解密端;解密装置200具体包括解密模块30,用于解密接收到的密文Cipher,获得解密数据Data',从解密数据 Data'中分离出解密端明文数据Plain'和校验码Mac ;校验模块40,用于对校验码Mac进行校验。本实施例中,加密装置100设置于加密端,解密装置200设置于解密端,当本发明实施例应用于网络传输场合中时,加密端为数据发送方计算机PC,解密端为数据接收方 PC;当本发明实施例应用于文件存储场合中时,加密端为文件写入方PC,解密端为文件读取方PC。本实施例在加密装置100中进行加密过程时,加密端明文数据Plain为二进制码流,校验码生成模块10采用较简单的异或操作获得校验码Mac,校验码Mac也为二进制码流,且获得的校验码Mac同样能够检测出数据的正确性与完整性,避免了因采用加密变换获得校验码Mac而造成成倍增加计算开销,有效提高了校验码生成效率。由加密模块20合并后的合并数据Data也为二进制码流,合并时将校验码Mac串接在加密端明文数据Plain 后方,获得合并数据Data,以便于解密后分离出校验码Mac,也可以采用其他方式合并,例如,将校验码Mac插入到加密端明文数据Plain中预设的指定位,解密时从指定位开始分离校验码Mac。因校验码Mac的生成是通过简单的异或操作获得,因此,加密模块20在加密时只对由加密端明文数据Plain和校验码Mac构成的合并数据Data进行一次加密变换处理, 即可获得密文Cipher,达到保护数据私密性的目的,同时也减少了加密变换次数,有效提高了数据加密及传输效率。本实施例在解密装置200中进行解密过程时,解密模块30只需对密文Cipher进行一次解密变换处理,即可完成解密操作,有效提高了数据解密效率。此外,由于解密后的解密数据Data'为二进制码流,如果加密模块20进行合并操作时,将校验码Mac串接在加密端明文数据Plain后方,则解密模块30分离解密数据Data'时,从解密数据Data'的尾部获取与校验码Mac长度相同的数据段,即为校验码Mac,其余部分即为解密端明文数据 Plain';如果加密模块20获得合并数据Data时采用其他方式,例如,将校验码Mac插入到加密端明文数据Plain中预设的指定位,则解密时解密模块30从指定位开始获取与校验码 Mac长度相同的数据段,即为校验码Mac,其余部分即为解密端明文数据Plain'。校验模块 40通过对校验码Mac的正确性进行校验,可检测加/解密数据在加密或解密、传输或存储过程中是否出现错误或是否被恶意篡改,在确保数据的私密性同时,也保证了数据的正确性。
本发明实施例中,校验码生成模块10具体用于将加密端明文数据Plain按照预设的分组长度L划分为多个加密端明文数据段 Pj,其中 j = 1、2........m;确定校验码Mac =Pi十P2十P3十......θ Pm4 Pm,其中@为异或操作。校验码生成模块10具体还用于当第m个加密端明文数据段Pm的长度小于分组长度L时,在第m个加密端明文数据段Pm中补0,使其长度为分组长度L。本实施例中分组长度L为加密端和解密端预先协商好的参数,分组后各加密端明文数据段Pj的长度为分组长度L,经过异或操作获得的校验码Mac的长度也为分组长度L。本实施例如果加密端明文数据Plain长度不为分组长度L的整数倍,此时加密端明文数据Plain最尾部一段数据,即第m个加密端明文数据段Pm的长度则会小于分组长度L,那么在校验码生成模块10采用异或操作计算校验码Mac时,在Pm中补充0, 使其长度为分组长度L,例如Pm= ( , a2, a3, a4, a5), Pm-i = (bj, b2, b3, b4, b5, b6, b7, b8),Pm 比 Pnrl 少 3砧扒在卩111 中补充 0,令卩 1 = (B1, a2,a3,a4,a5,0,0,0),由于y 0=y,故 Pm-I Pm= ( ai @ bi, a2 b2, a3 b3, a4 b4, a5 b5, b6, b7, b8)。此外 0 还可以补充在Pm'中指定的位置。本实施例采用较简单的异或操作获得校验码Mac,由于异或操作的处理时间快,且获得的校验码Mac同样能够检测出数据的正确性与完整性,避免了因采用加密变换获得校验码Mac而造成成倍增加计算开销,有效提高了校验码生成效率。本发明实施例中,加密模块20具体用于将合并数据Data按照预设的分组长度L划分为多个加密端分组数据段Di,其中i =1、2、.......η ;定义加密端密文数据段Ci,令初始加密端密文数据段Ctl = IV,其中,IV为长度为分组长度L的预设随机数;对当前加密端分组数据段Di与前一加密端密文数据段C^1进行异或操作;以预设的密钥K作为密钥,按照预设的分组密码算法对D1 C1^进行加密,得到加密端密文数据SC1=Eiick (D1 @ C,ι),其中@为异或操作;将各加密端密文数据段Q、C2........Cn依次串接,构成密文Cipher。本实施例中预设随机数IV、密钥K和分组密码算法均为加密端和解密端预先协商好的参数,由于本实施例中各数据段均以分组长度L作为单位长度,且各数据段均为二进制码流,为便于计算,预设随机数IV也规定为二进制码流,其长度也为分
组长度L。本实施例中各加密端分组数据段D” &........化和初始加密端密文数据
段Ctl为已知,由加密模块20加密后,获得各加密端密文数据段C1=Eiick ( D1 Co )、
C2=EncK ( D2 Ci )........ Cn=EncK( Dn Cn.i )。由于本实施例中的校验码Mac是
通过简单的异或操作获得的,因此在加密时只需采用一次加密变换,对由加密端明文数据 Plain和校验码Mac构成的合并数据Data进行加密,即可达到保护数据私密性的目的,减少了加密变换次数,避免成倍增加计算开销,有效提高加密效率。此外,如果加密端明文数据 Plain长度不为分组长度L的整数倍,则由加密端明文数据Plain和校验码Mac构成的合并数据Data的长度也不为分组长度L的整数倍。为方便计算,加密模块20在加密时需填充合并数据Data,例如,分组长度L为8bit,合并数据Data的长度为^bit,则应增加6bit或(6+8x)bit的填充数据,使其长度为Sbit的整数倍,其中χ为正整数。填充数据可以添加在合并数据Data的后方,也可添加在合并数据Data中指定位置。本发明实施例中,解密模块30具体用于
将密文Cipher按照预设的分组长度L划分为多个解密端密文数据段Ci',其中i =1、2、.......η ;定义初始解密端密文数据段Cc/ = IV,其中,IV为长度为分组长度L的预设随机数;以预设的密钥K作为密钥,按照预设的分组密码算法分别对解密端密文数据段 Ci'进行解密,获得解密数据段DecK(C/ );对当前解密数据段DecK((V )与前一解密端密文数据段C^1 ‘进行异或操作,获得解密端分组数据段D/ =DecK(CV) Q.i';将各解密端分组数据段D1' ,D2'、!V ........Dn'依次串接,构成解密数据
Datar ο本实施例中,解密端的分组长度L、预设随机数IV、密钥K和分组密码算法与上述加密端的分组长度L、预设随机数IV、密钥K和分组密码算法一致,均为加密端和解密端预先协商好的参数。本实施例中各解密端密文数据
段C1' ,C2' ,C3' ........Cn'和初始解密端密文数据段C/为已知,由解密
模块30解密后,获得各解密端分组数据段D1' = DecK (Cl' ) CV、D2'
= DecJK(CV) Cl'........ Dn' = DecK ( Cn' ) CnY。本实施例解密时只需
采用一次解密变换,即可完成对密文Cipher的解密,减少了解密变换次数,避免成倍增加计算开销,有效提高解密效率。此外,如果加密时在合并数据Data中添加了填充数据,则在解密时,解密模块30需要去除填充数据,以确保从解密数据Data'中分理出的数据正确。 如果填充数据添加在合并数据Data的后方,则在解密时解密模块30去除解密数据Data' 的尾部与填充数据长度一致的数据段,例如,解密数据Data'的长度为32bit,填充数据长度为6bit,去除解密数据Data'尾部6bit的数据段,剩余^bit即为待分离的数据;如果填充数据添加在合并数据Data中的指定位置,则解密模块30从解密数据Data'的指定位置开始去除与填充数据长度一致的数据段。如图12所示,图12为本发明一实施例的数据加/解密校验系统中校验模块的结构示意图,校验模块40具体包括验证码生成子模块41,用于对解密端明文数据Plain'中各数据段进行异或操作,确定验证码M';校验判断子模块42,用于判断验证码M'是否与校验码Mac相同;如果是,则判定校验成功,解密端明文数据Plain'与加密端明文数据Plain相同;如果否,则判定校验失败,解密端明文数据Plain'与加密端明文数据Plain不同。本实施例中,验证码生成子模块41采用较简单的异或操作获得验证码M',由于异或操作的处理时间快,避免了因采用加密变换获得证码M'而造成成倍增加计算开销,有效提高了校验码生成效率。同时,通过校验判断子模块42比较由解密端明文数据Plain' 生成的验证码M'与由加密端明文数据Plain生成的校验码Mac是否一致,以判断解密端明文数据Plain'是否与加密 端明文数据Plain相同,可检测加/解密数据在加密或解密、传输或存储过程中是否出现错误或是否被恶意篡改,保证了数据的正确性。本发明实施例中,验证码生成子模块41具体用于将解密端明文数据Plain'按照预设的分组长度L划分为多个解密端明文数据段 Pj',其中 j = 1、2........m;确定验证码M' =P1' P2' P3' ...... θΡη,.ι' Ρπ/,其中 @为异或操作。 验证码生成子模块41具体还用于当第m个解密端明文数据段P/的长度小于分组长度L时,在第m个解密端明文数据段P/中补0,使其长度为分组长度L。本实施例中,如果解密端明文数据Plain'长度不为分组长度L的整数倍,此时解密端明文数据Plain'最尾部一段数据,即第m个解密端明文数据段 Pffl'的长度则会小于分组长度L,那么验证码生成子模块41在采用异或操作计算验证码M'时,在Pm'中补充0,使其长度为分组长度L,例如Pm' = (B1 ‘ , a2',
a3 ,9 3-5 ),^m-I —
Od1 ‘ , b2 ‘ , b3 ‘ , b4 ‘ , b5 ‘ , b6 ‘,b/ , b8 ‘ ), Pm ‘ 比 Pnri ‘少 3bit,在 Pm'尾部补充 0,令 P/ = (B1 ‘ , a2 ‘ , a3 ‘ , a4 ‘ , a5 ‘ ,0,0, 0),由于 y 0=y,故 PmY @Pm' = (ai' bi' , a2', a/ b3',
a/ b/ , a5' Sb5' , be' , b/, b8')。此外0还可以补充在Pm'中指定的位置。本实施例采用较简单的异或操作获得验证码M',有效提高校验效率。以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
权利要求
1.一种数据加/解密校验方法,其特征在于,包括步骤加密装置对加密端明文数据Plain中各数据段进行异或操作,获得校验码Mac,合并所述加密端明文数据Plain和校验码Mac,获得合并数据Data,加密所述合并数据Data,获得密文Cipher,并输出到解密端;解密装置解密接收到的所述密文Cipher,获得解密数据Data ‘,从所述解密数据 Data'中分离出解密端明文数据Plain'和所述校验码Mac,并对所述校验码Mac进行校验。
2.根据权利要求1所述的数据加/解密校验方法,其特征在于,所述加密装置对加密端明文数据Plain中各数据段进行异或操作,获得校验码Mac具体包括将加密端明文数据Plain按照预设的分组长度L划分为多个加密端明文数据段Pp其中 j = 1、2、......、m;确定所述校验码Mac=P1 θ P2 P3 ...... Pm4 Pm,其中@为异或操作。
3.根据权利要求2所述的数据加/解密校验方法,其特征在于,所述确定校验码 Mac=Pi P2 P3 ...... Pm-I Pm之前还包括当第m个加密端明文数据段Pm的长度小于所述分组长度L时,在所述第m个加密端明文数据段Pm中补0,使其长度为所述分组长度L。
4.根据权利要求1所述的数据加/解密校验方法,其特征在于,所述对校验码Mac进行校验具体包括解密装置对所述解密端明文数据Plain'中各数据段进行异或操作,确定验证码M'; 判断所述验证码M'是否与所述校验码Mac相同;如果是,则判定校验成功,所述解密端明文数据Plain'与加密端明文数据Plain相同;如果否,则判定校验失败,所述解密端明文数据Plain'与加密端明文数据Plain不同。
5.根据权利要求4所述的数据加/解密校验方法,其特征在于,所述解密装置对解密端明文数据Plain'中各数据段进行异或操作,确定验证码M'具体包括将解密端明文数据Plain'按照预设的分组长度L划分为多个解密端明文数据段Pj',其中 j = 1、2........m;确定所述验证码M' =P1' P2' P3' ......SPm./ Ρπ/,其中@为异或操作。
6.根据权利要求5所述的数据加/解密校验方法,其特征在于,所述确定所述验证码 M' =P1' Ρ2' Ρ3' ......SPm.!' Pn/之前还包括当第m个解密端明文数据段P/的长度小于所述分组长度L时,在所述第m个解密端明文数据段P/中补0,使其长度为所述分组长度L。
7.根据权利要求1至6任一项所述的数据加/解密校验方法,其特征在于,所述加密合并数据Data,获得密文Cipher具体包括将所述合并数据Data按照预设的分组长度L划分为多个加密端分组数据段Di,其中i =1、2、.......η ;定义加密端密文数据段Ci,令初始加密端密文数据段Ctl = IV,其中,IV为长度为所述分组长度L的预设随机数;对当前加密端分组数据段Di与前一加密端密文数据段C^1进行异或操作; 以预设的密钥K作为密钥,按照预设的分组密码算法对D1 C^1进行加密,得到加密端密文数据段C1=Eiick (D1 @ C,ι),其中@为异或操作;将各加密端密文数据段Q、C2........Cn依次串接,构成所述密文Cipher。
8.根据权利要求1至6任一项所述的数据加/解密校验方法,其特征在于,所述解密装置解密接收到的所述密文Cipher,获得解密数据Data'具体包括将所述密文Cipher按照预设的分组长度L划分为多个解密端密文数据段Ci',其中i =1、2、.......η ;定义初始解密端密文数据段Cc/ = IV,其中,IV为长度为所述分组长度L的预设随机数;以预设的密钥K作为密钥,按照预设的分组密码算法分别对所述解密端密文数据段 Ci'进行解密,获得解密数据段DecK(C/ );对当前解密数据段DecK((V )与前一解密端密文数据段C^1 ‘进行异或操作,获得解密端分组数据段D/ =Dec^K(CV) Q.i';将各解密端分组数据段D1'、!V、!V ........Dn'依次串接,构成所述解密数据Datar ο
9.一种数据加/解密校验系统,其特征在于,包括加密装置和解密装置,所述加密装置具体包括校验码生成模块,用于对加密端明文数据Plain中各数据段进行异或操作,获得校验码 Mac ;加密模块,用于合并所述加密端明文数据Plain和校验码Mac,获得合并数据Data,加密所述合并数据Data,获得密文Cipher,并输出到解密端; 所述解密装置具体包括解密模块,用于解密接收到的所述密文Cipher,获得解密数据Data',从所述解密数据Data'中分离出解密端明文数据Plain'和所述校验码Mac ; 校验模块,用于对所述校验码Mac进行校验。
10.根据权利要求9所述的数据加/解密校验系统,其特征在于,所述校验码生成模块具体用于将加密端明文数据Plain按照预设的分组长度L划分为多个加密端明文数据段Pp其中 j = 1、2、......、m;确定所述校验码Mac=P1 θ P2 P3 ...... Pm4 Pm,其中@为异或操作。
11.根据权利要求10所述的数据加/解密校验系统,其特征在于,所述校验码生成模块具体还用于当第m个加密端明文数据段Pm的长度小于所述分组长度L时,在所述第m个加密端明文数据段Pm中补0,使其长度为所述分组长度L。
12.根据权利要求9所述的数据加/解密校验系统,其特征在于,所述校验模块具体包括验证码生成子模块,用于对所述解密端明文数据Plain'中各数据段进行异或操作,确定验证码M';校验判断子模块,用于判断所述验证码M'是否与所述校验码Mac相同;如果是,则判定校验成功,所述解密端明文数据Plain'与加密端明文数据Plain相同;如果否,则判定校验失败,所述解密端明文数据Plain'与加密端明文数据Plain不同。
13.根据权利要求12所述的数据加/解密校验系统,其特征在于,所述验证码生成子模块具体用于将解密端明文数据Plain'按照预设的分组长度L划分为多个解密端明文数据段Pj',其中 j = 1、2........m;确定所述验证码M' =P1' P2' P3' ......SPm./ Ρπ/,其中@为异或操作。
14.根据权利要求13所述的数据加/解密校验系统,其特征在于,所述验证码生成子模块具体还用于当第m个解密端明文数据段P/的长度小于所述分组长度L时,在所述第m个解密端明文数据段P/中补0,使其长度为所述分组长度L。
15.根据权利要求9至14任一项所述的数据加/解密校验系统,其特征在于,所述加密模块具体用于将所述合并数据Data按照预设的分组长度L划分为多个加密端分组数据段Di,其中i =1、2、.......η ;定义加密端密文数据段Ci,令初始加密端密文数据段Ctl = IV,其中,IV为长度为所述分组长度L的预设随机数;对当前加密端分组数据段Di与前一加密端密文数据段C^1进行异或操作; 以预设的密钥K作为密钥,按照预设的分组密码算法对D1 C^1进行加密,得到加密端密文数据段C1=Eiick (D1 @ C,ι),其中@为异或操作;将各加密端密文数据段Q、C2........Cn依次串接,构成所述密文Cipher。
16.根据权利要求9至14任一项所述的数据加/解密校验系统,其特征在于,所述解密模块具体用于将所述密文Cipher按照预设的分组长度L划分为多个解密端密文数据段Ci',其中i =1、2、.......η ;定义初始解密端密文数据段Cc/ = IV,其中,IV为长度为所述分组长度L的预设随机数;以预设的密钥K作为密钥,按照预设的分组密码算法分别对所述解密端密文数据段 Ci'进行解密,获得解密数据段DecK(C/ );对当前解密数据段DecK((V )与前一解密端密文数据段C^1 ‘进行异或操作,获得解密端分组数据段D/ =Dec^K(CV) Q.i';将各解密端分组数据段D1'、!V、!V ........Dn'依次串接,构成所述解密数据Datar ο
全文摘要
本发明公开了一种数据加/解密校验方法及其系统,其方法包括步骤加密装置对加密端明文数据中各数据段进行异或操作,获得校验码,合并加密端明文数据和校验码,获得合并数据,加密合并数据,获得密文,并输出到解密端;解密装置解密接收到的密文,获得解密数据,从解密数据中分离出解密端明文数据和校验码,并对校验码进行校验。本发明通过简单的异或操作生成校验码,仅采用一次加密变换即完成数据加密,减少了加密变换次数,避免成倍增加计算开销,有效提高加/解密效率;通过对校验码的正确性校验,可检测数据在加密或解密、传输或存储过程中是否出现错误或是否被恶意篡改,在确保数据的私密性同时,也保证了数据的正确性。
文档编号H04L9/06GK102437910SQ20111031682
公开日2012年5月2日 申请日期2011年10月18日 优先权日2011年10月18日
发明者徐泽明, 陈开渠 申请人:国家超级计算深圳中心(深圳云计算中心)
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1