本发明属于信息安全技术领域,具体涉及一种保留格式加密算法的实现方法及装置。
背景技术:
一般的加密方法,密文都是0-1组成的随机数串,不是可见字符;对于数据库中存储的身份证号码、手机号、地理坐标等信息,字段中仅包含数字和字母等可见字符,如果需要加密存储,得到的密文不再是上述可见字符,必须修改原有数据库字段类型和长度,改造的成本巨大。故引申了一种新的加密解决方案,通常称为“保留格式加密”(fpe),格式保留加密机制指明文字符串和密文字符串具有相同的格式和长度,其中格式指字符串取值范围,由于保留格式加密技术保持密文与明文具有相同格式的特性,因此适合于格式敏感的数据加密领域。
以sm4对称密码算法为例,sm4算法采用的是非线性迭代结构,每次迭代由一个轮函数给出,其中轮函数由一个非线性变换和线性变换复合而成,非线性变换由s盒所给出,可知轮函数起着至关重要的作用;基于对称密码算法如何实现保留格式加密和设计轮函数保证算法实现的安全性是目前急需解决的问题。
技术实现要素:
为了解决现有技术中存在的问题,本发明提出了一种保留格式加密算法的实现方法及装置,能够有效实现保留格式加密算法,应用于对明文数据长度和附加数据格式没有要求的场景,且保障算法的安全性。
为解决上述技术问题,本发明采用以下的技术方案:
本发明提出了一种保留格式加密算法的实现方法,该方法应用于对明文数据长度和附加数据格式没有要求的场景,加密过程具体包括:
将明文字符串x进行分段;
在执行偶数轮加密时,通过将明文字符串ai、构造的轮函数数据c分别执行字符串转数字操作后再进行加法运算,并将加法运算后获得的数据c执行数字转字符串操作后获得前段数据ai 1,后段数据为bi 1=bi,i的取值为当前轮数;
在执行奇数轮加密时,通过将明文字符串bi、构造的轮函数数据c分别执行字符串转数字操作后再进行加法运算,并将加法运算后获得的数据c执行数字转字符串操作后获得后段数据bi 1,前段数据为ai 1=ai,i的取值为当前轮数;
将偶数轮和奇数轮加密获得的前段数据和后段数据进行拼接后获得密文字符串y;
其中,所述轮函数数据c的构造过程包括:
预先计算数据p和设计轮函数f(a,i,k,n,t),计算q=t||i||{numr(a)]b|0(-t-b-1)modz,将p和q通过对称密码算法使用加密密钥k计算获得轮函数数据c;其中,a为轮函数输入数据,t为附加数据,i为轮数,n为数据长度,numr()为字符串转数字操作,r为进制,[a]b为数字a占用b个字节,不足b字节靠前的字节补0,z为模数,t为附加数据t的数据长度。
进一步地,所述将明文字符串x进行分段包括:
输入长度为n的明文字符串x,输入长度为t的附加数据t,明文字符串x的进制为r;
计算u=(n 1)/2,v=n-u;
置a0=x[1…u],b0=x[u 1…n],i=0。
进一步地,在执行偶数轮加密时,构造的轮函数数据c=f(bi,i,k,n,t),加法运算后获得的数据c=numr(ai) numr(c),前段数据
在执行奇数轮加密时,构造的轮函数数据c=f(ai,i,k,n,t),加法运算后获得的数据c=numr(bi) numr(c),后段数据
进一步地,所述数据p由固定字符、r、n和t预先计算获得。
进一步地,所述保留格式加密算法的实现方法还包括解密过程,解密过程具体包括:
将密文字符串y进行分段;
在执行偶数轮解密时,通过将密文字符串bi、构造的轮函数数据c分别执行字符串转数字操作后再进行减法运算,并将减法运算后获得的数据c执行数字转字符串操作后获得后段数据bi-1,前段数据为ai-1=ai,i的取值为当前轮数;
在执行奇数轮解密时,通过将密文字符串ai、构造的轮函数数据c分别执行字符串转数字操作后再进行减法运算,并将减法运算后获得的数据c执行数字转字符串操作后获得前段数据ai-1,后段数据为bi-1=bi,i的取值为当前轮数;
将偶数轮和奇数轮解密获得的前段数据和后段数据进行拼接后获得明文字符串x;
解密过程中轮函数数据c的构造过程与加密过程相同。
进一步地,所述将密文字符串y进行分段包括:
输入长度为n的密文字符串y,输入长度为t的附加数据t,密文字符串y的进制为r;
计算u=(n 1)/2,v=n-u;
置an=y[1…u],bn=y[u 1…n],i=n。
进一步地,在执行偶数轮解密时,构造的轮函数数据c=f(ai,i,k,n,t),减法运算后获得的数据c=numr(bi)-numr(c),后段数据
在执行奇数轮解密时,构造的轮函数数据c=f(bi,i,k,n,t),减法运算后获得的数据c=numr(ai)-numr(c),前段数据
本发明还提供了一种保留格式加密算法的实现装置,该装置应用于对明文数据长度和附加数据格式没有要求的场景,包括加密单元,所述加密单元用于:
将明文字符串x进行分段;
在执行偶数轮加密时,通过将明文字符串ai、构造的轮函数数据c分别执行字符串转数字操作后再进行加法运算,并将加法运算后获得的数据c执行数字转字符串操作后获得前段数据ai 1,后段数据为bi 1=bi,i的取值为当前轮数;
在执行奇数轮加密时,通过将明文字符串bi、构造的轮函数数据c分别执行字符串转数字操作后再进行加法运算,并将加法运算后获得的数据c执行数字转字符串操作后获得后段数据bi 1,前段数据为ai 1=ai,i的取值为当前轮数;
将偶数轮和奇数轮加密获得的前段数据和后段数据进行拼接后获得密文字符串y;
其中,所述轮函数数据c的构造过程包括:
预先计算数据p和设计轮函数f(a,i,k,n,t),计算q=t||i||[numr(a)]b|0(-t-b-1)modz,将p和q通过对称密码算法使用加密密钥k计算获得轮函数数据c;其中,a为轮函数输入数据,t为附加数据,i为轮数,n为数据长度,numr()为字符串转数字操作,r为进制,[a]b为数字a占用b个字节,不足b字节靠前的字节补0,z为模数,t为附加数据t的数据长度。
进一步地,所述将明文字符串x进行分段包括:
输入长度为n的明文字符串x,输入长度为t的附加数据t,明文字符串x的进制为r;
计算u=(n 1)/2,v=n-u;
置a0=x[1…u],b0=x[u 1…n],i=0;
在执行偶数轮加密时,构造的轮函数数据c=f(bi,i,k,n,t),加法运算后获得的数据c=numr(ai) numr(c),前段数据
在执行奇数轮加密时,构造的轮函数数据c=f(ai,i,k,n,t),加法运算后获得的数据c=numr(bi) numr(c),后段数据
所述数据p由固定字符、r、n和t预先计算获得。
进一步地,所述保留格式加密算法的实现装置还包括解密单元,所述解密单元用于:
将密文字符串y进行分段;
在执行偶数轮解密时,通过将密文字符串bi、构造的轮函数数据c分别执行字符串转数字操作后再进行减法运算,并将减法运算后获得的数据c执行数字转字符串操作后获得后段数据bi-1,前段数据为ai-1=ai,i的取值为当前轮数;
在执行奇数轮解密时,通过将密文字符串ai、构造的轮函数数据c分别执行字符串转数字操作后再进行减法运算,并将减法运算后获得的数据c执行数字转字符串操作后获得前段数据ai-1,后段数据为bi-1=bi,i的取值为当前轮数;
将偶数轮和奇数轮解密获得的前段数据和后段数据进行拼接后获得明文字符串x;
解密过程中轮函数数据c的构造过程与加密过程相同;
所述将密文字符串y进行分段包括:
输入长度为n的密文字符串y,输入长度为t的附加数据t,密文字符串y的进制为r;
计算u=(n 1)/2,v=n-u;
置an=y[1…u],bn=y[u 1…n],i=n;
在执行偶数轮解密时,构造的轮函数数据c=f(ai,i,k,n,t),减法运算后获得的数据c=numr(bi)-numr(c),后段数据
在执行奇数轮解密时,构造的轮函数数据c=f(bi,i,k,n,t),减法运算后获得的数据c=numr(ai)-numr(c),前段数据
与现有技术相比,本发明具有以下优点:
本发明提出的一种保留格式加密算法的实现方法及装置,通过对明文字符串进行分段以及采用偶数轮、奇数轮的加密机制,且通过构造的轮函数,能够应用于对明文数据长度和附加数据格式没有要求的场景,且能够有效保证保留格式加密算法的安全性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例的保留格式加密算法的实现方法中加密过程的示意图;
图2是本发明实施例的保留格式加密算法的实现方法中解密过程的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
首先,为了便于理解,对本发明中出现的相关概念介绍如下:
字符集:定义明文和密文取值的所有字符的集合,比如纯数字字符集{0123456789}、纯字母字符集{abcde…xyz}。
字符串:上述字符集中任意一个或多个字符组成的集合。
进制:上述字符集包含的字符总数,如字符集{0123456789}的进制为10,字符集{0123456789abcde…xyz}的进制为36。
数字:约定字符集中的每个字符均唯一对应一个数字,如字符集{0123456789abcde…xyz}中a->11b->12c->13z->36。
字符串转数字numr(x):长度为len的字符串x按照指定进制r,转换成数字x,转换规则是:
x初始为0,对于i从1到len,依次计算:x=x*r x[i]
如:x=“567”,r=10,
i=1时,x[i]=5,x=0*10 5=5;
i=2时,x[i]=6,x=5*10 6=56;
i=3时,x[i]=7,x=56*10 7=567。
数字转字符串
对于i从1到m,依次计算:x[m 1-i]=xmodr,x=[x/r]
如:x=567,r=10,m=3
i=1时,x[3]=567mod10=7,x=56;
i=2时,x[2]=56mod10=6,x=5;
i=3时,x[1]=5mod10=5,x=0。
[a]b:表示数字a占用b个字节,不足b字节靠前的字节补0。
sm4k(a):使用密钥k对分组数据a进行sm4加密。
基于此,本实施例提出一种保留格式加密算法的实现方法,该方法应用于对明文数据长度和附加数据格式没有要求的场景,加密过程具体包括:
步骤s11,将明文字符串x进行分段,具体包括:
输入长度为n的明文字符串x,输入长度为t的附加数据t,明文字符串x的进制为r;
计算u=(n 1)/2,v=n-u;
置a0=x[1…u],b0=x[u 1…n],i=0。
步骤s12,在执行偶数轮加密时,通过将明文字符串ai、构造的轮函数数据c分别执行字符串转数字操作后再进行加法运算,并将加法运算后获得的数据c执行数字转字符串操作后获得前段数据ai 1,后段数据为bi 1=bi,i的取值为当前轮数。
在执行奇数轮加密时,通过将明文字符串bi、构造的轮函数数据c分别执行字符串转数字操作后再进行加法运算,并将加法运算后获得的数据c执行数字转字符串操作后获得后段数据bi 1,前段数据为ai 1=ai,i的取值为当前轮数。
步骤s13,将偶数轮和奇数轮加密获得的前段数据和后段数据进行拼接后获得密文字符串y。
其中,轮函数数据c的构造过程包括:
预先计算数据p和设计轮函数f(a,i,k,n,t),计算q=t||i||[numr(a)]b|0(-t-b-1)modz,将p和q通过对称密码算法使用加密密钥k计算获得轮函数数据c;其中,a为轮函数输入数据,t为附加数据,i为轮数,n为数据长度,numr()为字符串转数字操作,r为进制,[a]b为数字a占用b个字节,不足b字节靠前的字节补0,z为模数,t为附加数据t的数据长度。
可以理解的是,z的取值和使用的分组算法、分组长度有关。
在本实例中,在执行偶数轮加密时,构造的轮函数数据c=f(bi,i,k,n,t),加法运算后获得的数据c=numr(ai) numr(c),前段数据
在执行奇数轮加密时,构造的轮函数数据c=f(ai,i,k,n,t),加法运算后获得的数据c=numr(bi) numr(c),后段数据
在本实例中,数据p由固定字符、r、n和t预先计算获得。
在实际的应用中,加密过程如图1所示,具体包括如下步骤:
步骤s21,计算u=(n 1)/2,v=n-u;
步骤s22,置a0=x[1…u],b0=x[u 1…n],i=0;
步骤s23,计算加密密钥k;
步骤s24,执行轮函数f(a,i,k,n,t)(i=0,1,2,…n);
偶数轮:
计算c=f(bi,i,k,n,t)
c=numr(ai) numr(c)
bi 1=bi
奇数轮:
计算c=f(ai,i,k,n,t)
c=numr(bi) numr(c)
ai 1=ai
步骤s25,获得最终密文:y=an|bn。
进一步的,轮函数的构造过程举例如下:
预计算部分:计算p=78||64||6a||61||[r]3||[vmod256]||[n]5||[6]3,其中78、64、6a、61为固定字符,占用的字节数与数据长度、进制相关。
轮数:本实例中采用10轮(本发明不做具体限制,轮数与安全性相关)。
设计轮函数f(a,i,k,n,t),其中a表示轮函数输入数据,t表示附加数据。
计算q=t||i||[numr(a)]b|0(-t-b-1)mod16,以sm4密码算法为例,这里占用的字节数之和为一个分组16字节的倍数。
计算
本实例的保留格式加密算法的实现方法还包括解密过程,解密过程具体包括:
步骤s31,将密文字符串y进行分段,具体包括:
输入长度为n的密文字符串y,输入长度为t的附加数据t,密文字符串y的进制为r;
计算u=(n 1)/2,v=n-u;
置an=y[1…u],bn=y[u 1…n],i=n。
步骤s32,在执行偶数轮解密时,通过将密文字符串bi、构造的轮函数数据c分别执行字符串转数字操作后再进行减法运算,并将减法运算后获得的数据c执行数字转字符串操作后获得后段数据bi-1,前段数据为ai-1=ai,i的取值为当前轮数。
在执行奇数轮解密时,通过将密文字符串ai、构造的轮函数数据c分别执行字符串转数字操作后再进行减法运算,并将减法运算后获得的数据c执行数字转字符串操作后获得前段数据ai-1,后段数据为bi-1=bi,i的取值为当前轮数。
步骤s33,将偶数轮和奇数轮解密获得的前段数据和后段数据进行拼接后获得明文字符串x。
解密过程中轮函数数据c的构造过程与加密过程相同。
在本实例中,在执行偶数轮解密时,构造的轮函数数据c=f(ai,i,k,n,t),减法运算后获得的数据c=numr(bi)-numr(c),后段数据
在执行奇数轮解密时,构造的轮函数数据c=f(bi,i,k,n,t),减法运算后获得的数据c=numr(ai)-numr(c),前段数据
在实际的应用中,解密过程如图2所示,具体包括如下步骤:
步骤s41,计算u=(n 1)/2,v=n-u;
步骤s42,置an=y[1…u],bn=y[u 1…n],i=n;
步骤s43,计算加密密钥k;
步骤s44,执行轮函数f(a,i,k,n,t)(i=n,n-1,n-2,…1,0);
偶数轮:
计算c=f(ai,i,k,n,t)
c=numr(bi)-numr(c)
ai-1=ai
奇数轮:
计算c=f(bi,i,k,n,t)
c=numr(ai)-numr(c)
bi-1=bi
步骤s45,获得最终明文:x=a0|b0。
本实例还提出一种保留格式加密算法的实现装置,该装置应用于对明文数据长度和附加数据格式没有要求的场景,包括加密单元,所述加密单元用于:
将明文字符串x进行分段;
在执行偶数轮加密时,通过将明文字符串ai、构造的轮函数数据c分别执行字符串转数字操作后再进行加法运算,并将加法运算后获得的数据c执行数字转字符串操作后获得前段数据ai 1,后段数据为bi 1=bi,i的取值为当前轮数。
在执行奇数轮加密时,通过将明文字符串bi、构造的轮函数数据c分别执行字符串转数字操作后再进行加法运算,并将加法运算后获得的数据c执行数字转字符串操作后获得后段数据bi 1,前段数据为ai 1=ai,i的取值为当前轮数。
将偶数轮和奇数轮加密获得的前段数据和后段数据进行拼接后获得密文字符串y。
其中,所述轮函数数据c的构造过程包括:
预先计算数据p和设计轮函数f(a,i,k,n,t),计算q=t||i||[numr(a)]b|0(-t-b-1)modz,将p和q通过对称密码算法使用加密密钥k计算获得轮函数数据c;其中,a为轮函数输入数据,t为附加数据,i为轮数,n为数据长度,numr()为字符串转数字操作,r为进制,[a]b为数字a占用b个字节,不足b字节靠前的字节补0,z为模数,t为附加数据t的数据长度。
在本实例中,将明文字符串x进行分段包括:
输入长度为n的明文字符串x,输入长度为t的附加数据t,明文字符串x的进制为r;
计算u=(n 1)/2,v=n-u;
置a0=x[1…u],b0=x[u 1…n],i=0;
在执行偶数轮加密时,构造的轮函数数据c=f(bi,i,k,n,t),加法运算后获得的数据c=numr(ai) numr(c),前段数据
在执行奇数轮加密时,构造的轮函数数据c=f(ai,i,k,n,t),加法运算后获得的数据c=numr(bi) numr(c),后段数据
所述数据p由固定字符、r、n和t预先计算获得。
所述保留格式加密算法的实现装置还包括解密单元,解密单元用于:
将密文字符串y进行分段。
在执行偶数轮解密时,通过将密文字符串bi、构造的轮函数数据c分别执行字符串转数字操作后再进行减法运算,并将减法运算后获得的数据c执行数字转字符串操作后获得后段数据bi-1,前段数据为ai-1=ai,i的取值为当前轮数。
在执行奇数轮解密时,通过将密文字符串ai、构造的轮函数数据c分别执行字符串转数字操作后再进行减法运算,并将减法运算后获得的数据c执行数字转字符串操作后获得前段数据ai-1,后段数据为bi-1=bi,i的取值为当前轮数。
将偶数轮和奇数轮解密获得的前段数据和后段数据进行拼接后获得明文字符串x。
解密过程中轮函数数据c的构造过程与加密过程相同。
在本实例中,将密文字符串y进行分段包括:
输入长度为n的密文字符串y,输入长度为t的附加数据t,密文字符串y的进制为r;
计算u=(n 1)/2,v=n-u;
置an=y[1…u],bn=y[u 1…n],i=n。
在执行偶数轮解密时,构造的轮函数数据c=f(ai,i,k,n,t),减法运算后获得的数据c=numr(bi)-numr(c),后段数据
在执行奇数轮解密时,构造的轮函数数据c=f(bi,i,k,n,t),减法运算后获得的数据c=numr(ai)-numr(c),前段数据
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
1.一种保留格式加密算法的实现方法,其特征在于,该方法应用于对明文数据长度和附加数据格式没有要求的场景,加密过程具体包括:
将明文字符串x进行分段;
在执行偶数轮加密时,通过将明文字符串ai、构造的轮函数数据c分别执行字符串转数字操作后再进行加法运算,并将加法运算后获得的数据c执行数字转字符串操作后获得前段数据ai 1,后段数据为bi 1=bi,i的取值为当前轮数;
在执行奇数轮加密时,通过将明文字符串bi、构造的轮函数数据c分别执行字符串转数字操作后再进行加法运算,并将加法运算后获得的数据c执行数字转字符串操作后获得后段数据bi 1,前段数据为ai 1=ai,i的取值为当前轮数;
将偶数轮和奇数轮加密获得的前段数据和后段数据进行拼接后获得密文字符串y;
其中,所述轮函数数据c的构造过程包括:
预先计算数据p和设计轮函数f(a,i,k,n,t),计算q=t||i||[numr(a)]b|0(-t-b-1)modz,将p和q通过对称密码算法使用加密密钥k计算获得轮函数数据c;其中,a为轮函数输入数据,t为附加数据,i为轮数,n为数据长度,numr()为字符串转数字操作,r为进制,[a]b为数字a占用b个字节,不足b字节靠前的字节补0,z为模数,t为附加数据t的数据长度。
2.根据权利要求1所述的保留格式加密算法的实现方法,其特征在于,所述将明文字符串x进行分段包括:
输入长度为n的明文字符串x,输入长度为t的附加数据t,明文字符串x的进制为r;
计算u=(n 1)/2,v=n-u;
置a0=x[1…u],b0=x[u 1…n],i=0。
3.根据权利要求2所述的保留格式加密算法的实现方法,其特征在于,
在执行偶数轮加密时,构造的轮函数数据c=f(bi,i,k,n,t),加法运算后获得的数据c=numr(ai) numr(c),前段数据
在执行奇数轮加密时,构造的轮函数数据c=f(ai,i,k,n,t),加法运算后获得的数据c=numr(bi) numr(c),后段数据
4.根据权利要求1所述的保留格式加密算法的实现方法,其特征在于,所述数据p由固定字符、r、n和t预先计算获得。
5.根据权利要求1所述的保留格式加密算法的实现方法,其特征在于,所述保留格式加密算法的实现方法还包括解密过程,解密过程具体包括:
将密文字符串y进行分段;
在执行偶数轮解密时,通过将密文字符串bi、构造的轮函数数据c分别执行字符串转数字操作后再进行减法运算,并将减法运算后获得的数据c执行数字转字符串操作后获得后段数据bi-1,前段数据为ai-1=ai,i的取值为当前轮数;
在执行奇数轮解密时,通过将密文字符串ai、构造的轮函数数据c分别执行字符串转数字操作后再进行减法运算,并将减法运算后获得的数据c执行数字转字符串操作后获得前段数据ai-1,后段数据为bi-1=bi,i的取值为当前轮数;
将偶数轮和奇数轮解密获得的前段数据和后段数据进行拼接后获得明文字符串x;
解密过程中轮函数数据c的构造过程与加密过程相同。
6.根据权利要求5所述的保留格式加密算法的实现方法,其特征在于,所述将密文字符串y进行分段包括:
输入长度为n的密文字符串y,输入长度为t的附加数据t,密文字符串y的进制为r;
计算u=(n 1)/2,v=n-u;
置an=y[1…u],bn=y[u 1…n],i=n。
7.根据权利要求6所述的保留格式加密算法的实现方法,其特征在于,
在执行偶数轮解密时,构造的轮函数数据c=f(ai,i,k,n,t),减法运算后获得的数据c=numr(bi)-numr(c),后段数据
在执行奇数轮解密时,构造的轮函数数据c=f(bi,i,k,n,t),减法运算后获得的数据c=numr(ai)-numr(c),前段数据
8.一种保留格式加密算法的实现装置,其特征在于,该装置应用于对明文数据长度和附加数据格式没有要求的场景,包括加密单元,所述加密单元用于:
将明文字符串x进行分段;
在执行偶数轮加密时,通过将明文字符串ai、构造的轮函数数据c分别执行字符串转数字操作后再进行加法运算,并将加法运算后获得的数据c执行数字转字符串操作后获得前段数据ai 1,后段数据为bi 1=bi,i的取值为当前轮数;
在执行奇数轮加密时,通过将明文字符串bi、构造的轮函数数据c分别执行字符串转数字操作后再进行加法运算,并将加法运算后获得的数据c执行数字转字符串操作后获得后段数据bi 1,前段数据为ai 1=ai,i的取值为当前轮数;
将偶数轮和奇数轮加密获得的前段数据和后段数据进行拼接后获得密文字符串y;
其中,所述轮函数数据c的构造过程包括:
预先计算数据p和设计轮函数f(a,i,k,n,t),计算q=t||i||[numr(a)]b|0(-t-b-1)modz,将p和q通过对称密码算法使用加密密钥k计算获得轮函数数据c;其中,a为轮函数输入数据,t为附加数据,i为轮数,n为数据长度,numr()为字符串转数字操作,r为进制,[a]b为数字a占用b个字节,不足b字节靠前的字节补0,z为模数,t为附加数据t的数据长度。
9.根据权利要求8所述的保留格式加密算法的实现装置,其特征在于,所述将明文字符串x进行分段包括:
输入长度为n的明文字符串x,输入长度为t的附加数据t,明文字符串x的进制为r;
计算u=(n 1)/2,v=n-u;
置a0=x[1…u],b0=x[u 1…n],i=0;
在执行偶数轮加密时,构造的轮函数数据c=f(bi,i,k,n,t),加法运算后获得的数据c=numr(ai) numr(c),前段数据
在执行奇数轮加密时,构造的轮函数数据c=f(ai,i,k,n,t),加法运算后获得的数据c=numr(bi) numr(c),后段数据
所述数据p由固定字符、r、n和t预先计算获得。
10.根据权利要求8所述的保留格式加密算法的实现装置,其特征在于,所述保留格式加密算法的实现装置还包括解密单元,所述解密单元用于:
将密文字符串y进行分段;
在执行偶数轮解密时,通过将密文字符串bi、构造的轮函数数据c分别执行字符串转数字操作后再进行减法运算,并将减法运算后获得的数据c执行数字转字符串操作后获得后段数据bi-1,前段数据为ai-1=ai,i的取值为当前轮数;
在执行奇数轮解密时,通过将密文字符串ai、构造的轮函数数据c分别执行字符串转数字操作后再进行减法运算,并将减法运算后获得的数据c执行数字转字符串操作后获得前段数据ai-1,后段数据为bi-1=bi,i的取值为当前轮数;
将偶数轮和奇数轮解密获得的前段数据和后段数据进行拼接后获得明文字符串x;
解密过程中轮函数数据c的构造过程与加密过程相同;
所述将密文字符串y进行分段包括:
输入长度为n的密文字符串y,输入长度为t的附加数据t,密文字符串y的进制为r;
计算u=(n 1)/2,v=n-u;
置an=y[1…u],bn=y[u 1…n],i=n;
在执行偶数轮解密时,构造的轮函数数据c=f(ai,i,k,n,t),减法运算后获得的数据c=numr(bi)-numr(c),后段数据
在执行奇数轮解密时,构造的轮函数数据c=f(bi,i,k,n,t),减法运算后获得的数据c=numr(ai)-numr(c),前段数据