一种短报文通信的加解密方法
技术领域
本发明涉及通信技术领域,涉及一种通信加密方法,尤其涉及一种短报文通信的加解密方法。
背景技术
短报文通信是一种重要通信方式,以北斗卫星导航系统为例,目前北斗卫星导航系统是我国自主研制的全球卫星导航系统,和GPS的最大区别在于北斗卫星具有独特的通信功能--短报文通信。短报文通信可以按照服务频度(民用服务频度为60S)的间隔定期发送报文服务,但由于资源的限制,每包报文长度(数据带宽)受限。
民用短报文通信的报文是明文,在一些需要传输敏感数据的应用当中,需要对数据进行加密。
但目前常用的对称商用密码算法在对明文加密处理后,密文数据长度会发生变化,以3DES算法为例,即明文长度不是整8字节的情况下,加密后密文长度必须以整8字节的长度出现,也就是L(密文)≥L(明文)。对于北斗短报文通信而言(民用长度78个字节),如果采用常规对称商用加密算法,则实际使用时,明文数据长度就不能超过72个字节。这将极大限制北斗短报文通信的应用效能。
其二,对称算法需要加解密双方以安全的方式交换密钥。常用的方式是以加密卡的ID作为索引,但这种方式在北斗短报文通信中要么占用数据带宽,要么占用一次服务频度来交换密钥索引。无论采用哪种方式,都会制约北斗短报文通信的应用。
发明内容
针对现有技术中存在的技术问题,本发明的目的在于提供一种短报文通信的加解密方法。
本发明的技术方案为:
一种短报文通信的加密方法,其步骤为:
1)检测待加密明文数据P的数据位长度L(P);如果L(P)<Dbit,则进行步骤4),否则进行步骤2)~3);
2)将明文数据P划分成若干Dbit的数据块,分别标记为P1、P2、…Pn-1、Pn,即P=P1P2…Pn;
3)采用对称加密算法对P1、P2…Pn-1数据块分别进行加密,得到对应的密文C1、C2…Cn-2、Cn-1;如果L(Pn)=Dbit,则采用对称加密算法对Pn数据块进行加密得到密文Cn,如果L(Pn)≠Dbit,则从数据块Ci的设定位置a处截取D-L(Pn)bit的加密数据P’i补在数据块Pn的位置b处组成Dbit的新数据P’n,截取后的Ci记为C’i;然后采用对称加密算法对P’n数据块进行加密得到密文Cn,最后得到该明文数据P的密文C=C1C2…C’i…Cn;i=1,2…n-1,D为对称加密算法的分组长度;
4)从明文数据P最低位后面开始依次补1位bit“1”和若干位bit“0”,直至补足Dbit,生成新的明文数据P’,即L(P’1)=Dbit;然后对P’1取反,生成P’2=!P’1;然后采用对称加密算法对P’1、P’2加密,得到该明文数据P的密文C。
进一步的,步骤2)中,将明文数据P按从高位至低位或从低位到高位划分成若干Dbit的数据块。
进一步的,该设定位置a为数据块Ci的最低位开始的连续或设定间隔的D-L(Pn)bit数据。
进一步的,该设定位置a为数据块Ci的最高位开始的连续或设定间隔的D-L(Pn)bit数据。
进一步的,该设定位置a为数据块Ci中连续或设定间隔的D-L(Pn)bit数据。
进一步的,该位置b为数据块Pn的高位或低位或中间设定位置。
一种加密数据的解密方法,其步骤为:
1)检测待解密密文C的数据位长度L(C),如果L(C)=2Dbit,则进行步骤4),否则进行步骤2)~3);
2)将密文C划分成若干Dbit的数据块,分别标记为C1、C2、…Cn-1、Cn,即C=C1C2…Cn;
3)如果L(Cn)=Dbit,将采用对称解密算法对C1、C2…Cn数据块进行解密,得到明文数据P=P1P2…Pn;如果L(Cn)≠Dbit,则从数据块Ci中的设定位置a处截取D-L(Cn)bit的加密数据C’i补在数据块Cn的位置b处组成Dbit的新数据C’n,截取后的Ci记为C”i,然后采用对称解密算法对C’n解密得到明文P”n,然后从数据块P”n的位置b处截取D-L(Cn)bit的明文数据P’n补在数据块C”i的设定位置a处,组成新的Dbit密文数据Ci,截取后的数据块P”n记为Pn;采用对称解密算法对C1、C2…Cn-1数据块进行解密,得到明文数据P=P1P2…Pn-1,最后得到明文数据P=P1P2…Pn-1Pn;其中,i=1,2…n-1,D为对称解密算法的分组长度;
4)将密文C划分为Dbit的两数据块C1、C2;然后采用对称解密算法对C1、C2解密分别得到对应的明文P1、P2,将P2取反,生成P’2=!P2,如果P1=P’2,则从P1最低位依次向高位判断,直至出现bit”1”为止,该bit”1”之前至最高位为明文P,否则解密后的明文P=P1P2。
进一步的,将密文C按从高位至低位或从低位到高位划分成若干Dbit的数据块。
进一步的,该设定位置a为数据块最低位开始的连续或设定间隔的D-L(Pn)bit数据;或者该设定位置a为数据块最高位开始的连续或设定间隔的D-L(Pn)bit数据;或者该设定位置a为数据块中连续或设定间隔的D-L(Pn)bit数据。
进一步的,该位置b为数据块的高位D-L(Pn)bit数据或低位D-L(Pn)bit数据或中间设定位置的D-L(Pn)bit数据。
与现有技术相比,本发明的积极效果为:
本发明充分利用了带宽资源、提高了通信效率,本发明不仅适用于北斗通信,对于其他通信传输同样适用,具有广泛的适用性。
附图说明
图1为本发明的加密方法流程图;
图2为本发明解密方法流程图。
具体实施方式
下面结合附图和实施例对本发明进行进一步详细描述。
本发明提出了基于北斗短报文通信应用的一种对称商用密码算法的改进算法,从而实现不影响北斗短报文通信效率的安全应用;同时利用北斗卡号在通信过程中不占用数据带宽的特点解决索引交换。通过上述两种措施,在实例中解决了北斗短报文通信最大可用长度和报文加密的矛盾。
一、算法实现
本发明适用于对称密码算法,以3DES算法为例,
3DES算法是指使用密钥K将64bit明文数据块进行3次DES加密/解密。
设EK()和DK()代表DES算法的加密过程和解密过程,K代表DES算法使用的密钥,P代表明文,C代表密文,L为数据位长度,这样,
3DES加密过程为:C=EK3(DK2(EK1(P)))。
3DES解密过程为:P=DK1(EK2(DK3(C)))。
则改进算法处理流程如下:
(一)加密,如图1所示。
第1步:检测待加密明文数据P的数据位长度L(P),如果L(P)<64bit,转至第7步。
第2步:将明文数据P按从高位至低位划分成64bit的块,一直划分到数据的最后一块,分别标记为P1、P2、…Pn-1、Pn,即P=P1P2…Pn。
第3步:将P1、P2…Pn-1数据块进行加密处理,
Ci=EK3(DK2(EK1(Pi)));i=1,2…n-1。
第4步:L(Pn)≠64bit,转至第6步。
第5步:Cn=EK3(DK2(EK1(Pn))),即密文数据C=C1C2…Cn,结束。
第6步:
●从Cn-1中从最低位开始依次截取64-L(Pn)bit的加密数据P’n-1,补在Pn的高位,组成64bit的新数据P’n=P’n-1Pn;截取后的Cn-1变成C’n-1;
●Cn=EK3(DK2(EK1(P’n)));
●C=C1C2…Cn-2C’n-1Cn;
●结束。
第7步:
●从P最低位后面开始依次补1位bit”1”,若干位bit“0”,直至补足64bit,生成新的明文数据P’,即L(P’1)=64bit,P’1=P10…0;
●将P’1取反,生成P’2=!P’1;
●Cn=EK3(DK2(EK1(P’n))),n=1、2;
●C=C1C2;
●结束。
(二)解密,如图2所示。
第1步:检测待解密密文C的数据位长度L(C),如果L(C)=128bit,转至第6步;否则进行步骤2;
第2步:将密文数据C按从高位至低位划分成64bit的块,一直划分到数据的最后一块,分别标记为C1、C2、…Cn-1、Cn,即C=C1C2…Cn。
第3步:L(Cn)≠64bit,转至第5步。
第4步:将C1、C2…Cn数据块进行解密处理,
●Pi=DK1(EK2(DK3(Ci)));i=1,2…n
●即明文数据P=P1P2…Pn;
●结束。
第5步:
●从Cn-1中最低位开始依次截取64-L(Cn)bit的加密数据C’n-1,补在Cn的高位,组成64bit的新数据C’n=C’n-1Cn;截取后的Cn-1变成C”n-1;
●P”n=DK1(EK2(DK3(C’n)));
●从P”n中最高位开始依次截取64-L(Cn)bit的明文数据P’n,补在C”n-1的低位,组成新的64bit密文数据Cn-1=C”n-1P’n;截取后的P”n变成Pn;
●Pi=DK1(EK2(DK3(Ci)));i=1、2…n-1;
●明文数据P=P1P2…Pn-1Pn;
●结束。
第6步:
●将密文数据C按从高位至低位划分成两个64bit的块C1和C2;
●Pi=DK1(EK2(DK3(Ci)));i=1,2;
●将P2取反,生成P’2=!P2;
●如果P1=P’2转至第7步;
●P=P1P2;
●结束。
第7步:
●从P1最低位依次向高位判断,直至出现bit”1”为止,则该bit”1”之前至最高位为实际明文数据;
结束。