法律状态公告日
法律状态信息
法律状态
2016-08-17
授权
授权
2014-05-14
实质审查的生效 IPC(主分类):H04L9/06 申请日:20140117
实质审查的生效
2014-04-16
公开
公开
技术领域
本发明涉及信息安全中的密码算法领域,特别是涉及轻量级密码Piccolo算法硬件实现方 法。
背景技术
Piccolo轻量级密码算法是在2011年国际顶级密码硬件与嵌入式系统会议(CHES)上被提 出,是一种适合资源受限的智能卡加密算法。
Piccolo算法是一种轻量级分组加密算法,分组长度64位,密钥长度有80位和128位, 其中密钥为80位时记作Piccolo-80,迭代轮数r为25轮;密钥128位记作Piccolo-128,迭 代轮数r为31轮。算法采用非平衡型Feistel结构;算法包括密钥扩展运算,每轮中,加密 数据同子密钥都进行异或运算(AddRoundKey,ARK操作)、F函数运算与RP轮置换函数运 算(最后一轮没有使用RP轮置换函数);将64位明文输入分为4个分支,每个分支为16位; 将从左到右第一个分支与第三个分支分别同白化密钥wk0与wk1进行异或 (AddWhiteningKey,AWK操作);然后进行r-1轮迭代加密;最后一轮输入的64位中间值同 样划分为4个分支,每个分支为16位;然后进行同样的F函数运算和子密钥异或运算 (AddRoundKey,ARK操作),得到的结果第一个分支与第三个分支直接同白化密钥wk0与 wk1进行异或,最终得到64位密文输出。RP函数置换运算将输入64位值划分为8个字节, 然后进行字节的置换操作,如图4所示,将RP轮置换函数的64输入位数据从高位到低位 依次划分为8个字节g0,g1,g2,g3,g4,g5,g6,g7,以g2,g7,g4,g1,g6,g3,g0,g5作为RP轮置换函 数运算的64位输出数据。
密钥扩展部分:
初始密钥key长度为80位:
将初始密钥从高位开始按16位一组划分为5个部分,分别记作k0、k1、k2、k3及k4,按 照以下公式生成白化密钥wka和轮密钥rk2i、rk2i+1,其中,0≤a<4,0≤i<r,r表示轮运 算轮数;
白化密钥扩展:
轮密钥扩:
其中,|为连接符,⊕为异或符,mod代表取余运算,k0、k1、k2、k3及k4的上标L表 示k0、k1、k2、k3及k4的高8位,k0、k1、k2、k3及k4的上标R表示k0、k1、k2、k3及k4的低8位;
其中,{}16为16进制数,{}2为二进制数,ci是用五位二进制数表示的十进制数i;
初始密钥key长度为128位:
将初始密钥从高位开始按16位一组划分为8个部分,分别记作k0、k1、k2、k3、k4、k5、 k6及k7,按照以下公式生成白化密钥wka和轮密钥rk2i、rk2i+1,其中,0≤a<4,0≤i<r, r表示轮运算轮数:
白化密钥扩展:
当(2i+2)mod8=0时,则按照(k0,k1,k2,k3,k4,k5,k6,k7)←(k2,k1,k6,k7,k0,k3, k4,k5)进行轮密钥扩展,否则,依据(k0,k1,k2,k3,k4,k5,k6,k7)进行轮密钥扩展;
轮密钥扩展:有
其中,|为连接符,⊕为异或符,mod代表取余运算,k0、k1、k2、k3、k4、k5、k6及k7的上标L表示k0、k1、k2、k3、k4、k5、k6及k7的高8位,k0、k1、k2、k3、k4、k5、k6及k7的上标R表示k0、k1、k2、k3、k4、k5、k6及k7的低8位;
F函数变换依次包括S盒变换、列混合变换及S盒变换,如图3所示:
其中,所述S盒变换所使用的S盒为{e,4,b,2,3,8,0,9,1,a,7,f,6,c,5,d};
所述列混合变换中所使用的矩阵M为:
现有技术中Piccolo轻量级密码算法实现方法为:
明文生成密文、密钥扩展生成子密钥是相互独立的两个部分,对于生成白化密钥与轮密 钥先用寄存器保存起来,然后与明文进行白化密钥加和轮密钥加操作,这种操作延迟加密时 间与增加寄存器数量,不利于减少芯片实现面积;
Piccolo-80算法是采用24+1轮运算,前24轮在轮函数硬件资源上可重复调用实现,最后 一轮需要重新分配轮运算资源,因此25轮迭代运算时不能连续重复。同理,Piccolo-128算法, 采用30+1轮运算,前30轮在轮函数硬件资源上可重复调用实现,最后一轮需要重新分配轮 运算资源。Piccolo原始算法中由于最后一轮运算需单独实现,这种方法不利于最大限度重复 运行相同模块,从而增加芯片实现面积,同时占用资源。
发明内容
本发明研究实现了一种面积优化的轻量级Piccolo加密算法硬件实现方法,该方法在优化 实现Piccolo加密算法时,通过对算法结构深入研究;采取以下方法对Piccolo算法现有实现 技术进行合理优化,达到节省Piccolo加密算法硬件实现面积,使其更适合在资源约束的硬件 芯片上实现,同时加密性能提高。
一种Piccolo加密算法硬件实现方法,包括以下步骤:
步骤1:将64位的待加密数据加载至寄存器;
步骤2:将加载至寄存器的64位待加密数据从高位开始按16位一组依次分成4组,记作: P0、P1、P2及P3;同时将初始密钥key进行Piccolo白化密钥扩展运算,生成16位白化密钥 wka,其中,0≤a<4,a为整数;
设定加密轮数r:当初始密钥长度为80位时,加密轮数r=25;当初始密钥长度为128 位时,加密轮数r=31;
步骤3:将P0与wk0进行异或运算获得P′0,P2与wk1进行异或运算获得P′2,P′0、P1、P′2及P3组成轮运算的运算数据,对轮运算的运算数据进行r轮轮运算;
轮运算包括以下几个步骤:
1)将P′0和P′2分别进行F函数变换,将获得的变换结果分别记为P″0和P″2,同时将初始 密钥key进行Piccolo轮密钥扩展运算,生成两个16位轮密钥rk2i、rk2i+1,其中,0≤i<r, 第i轮轮运算需要使用两个轮密钥rk2i、rk2i+1;
2)将P″0、轮密钥rk2i及P1进行异或运算,获得运算结果记为P′1;将P″2、轮密钥rk2i+1及 P3进行异或运算,获得运算结果记为P′3;
3)将P″0、P′1、P″2及P′3组成64位的运算数据status,对运算数据status进行RP轮置 换函数运算,获得RP运算结果statusRP,如果到达r轮,则进入步骤4;否则,将64位运算 结果statusRP从高位开始按16位一组依次分成4组,记作:及 令
步骤4:对statusRP进行RP-1轮置换函数运算,获得RP-1轮置换函数运算结果将64位的从高位开始按16位一组依次分成4组,记作:及将与wk2进行异或运算获得将与wk3进 行异或运算获得利用及组成64位密文, 完成加密操作。
所述步骤2与步骤3中对初始密钥key进行Piccolo白化密钥扩展和轮密钥扩展运算具体 过程如下:
1)初始密钥key长度为80位
将初始密钥从高位开始按16位一组划分为5个部分,分别记作k0、k1、k2、k3及k4,按 照以下公式生成白化密钥wka和轮密钥rk2i、rk2i+1,其中,0≤a<4,0≤i<r,r表示轮运 算的轮数:
白化密钥扩展:
轮密钥扩展:
其中,|为连接符,⊕为异或符,mod为取余运算,k0、k1、k2、k3及k4的上标L表示k0、 k1、k2、k3及k4的高8位,k0、k1、k2、k3及k4的上标R表示k0、k1、k2、k3及k4的低8 位;
其中,{}16为16进制数,{}2为二进制数,ci是用五位二进制数表示的十进制数i;
2)初始密钥key长度为128位
将初始密钥从高位开始按16位一组划分为8个部分,分别记作k0、k1、k2、k3、k4、k5、 k6及k7,按照以下公式生成白化密钥wka和轮密钥rk2i、rk2i+1,其中,0≤a<4,0≤i<r, r表示轮运算轮数:
白化密钥扩展:
当(2i+2)mod8=0时,则按照(k0,k1,k2,k3,k4,k5,k6,k7)←(k2,k1,k6,k7,k0,k3, k4,k5)进行轮密钥扩展,否则,依据(k0,k1,k2,k3,k4,k5,k6,k7)进行轮密钥扩展;
轮密钥扩展:有
其中,|为连接符,⊕为异或符,mod代表取余运算,k0、k1、k2、k3、k4、k5、k6及k7的上标L表示k0、k1、k2、k3、k4、k5、k6及k7的高8位,k0、k1、k2、k3、k4、k5、k6及k7的上标R表示k0、k1、k2、k3、k4、k5、k6及k7的低8位;
所述的F函数变换依次包括S盒变换、列混合变换及S盒变换;
其中,所述S盒变换所使用的S盒为{e,4,b,2,3,8,0,9,1,a,7,f,6,c,5,d};
所述列混合变换中所使用的矩阵M为:
所述的RP轮置换函数将输入64位数据划分为8个字节,然后进行字节的置换操作;RP-1轮置换函数运算是RP函数置换的逆运算,将RP-1轮置换函数的64输入位数据从高位到低位 依次划分为8个字节g0,g1,g2,g3,g4,g5,g6,g7,以g6,g3,g0,g5,g2,g7,g4,g1作为RP-1轮置换函 数运算的64位输出数据。
RP-1轮置换函数运算是RP函数置换逆运算,结合图5。
对上述Piccolo加密算法硬件实现方法,其将Piccolo加密算法分为四个模块:常数更新 模块(UpdateConstant)、F函数变换模块(Function)、轮函数模块(PiccoloRound)、主控制模 块(Piccolo)四个模块。以下对四个模块进行描述:
常数更新模块(UpdateConstant):包含轮密钥扩展运算步骤,对传递进来轮数i先产生 参数,再利用产生的参数合成每轮的轮密钥rk2i、rk2i+1;
F函数变换模块(Function):包含S盒,列混合矩阵,运算顺序为S盒变换→列混合变换 →S盒变换,如图3所示。
轮函数模块(PiccoloRound):包含常数更新、F函数变换两个运算模块,其本身含有RP 轮置换函数运算与异或运算(AddRoundKey,ARK操作),利用Verilog HDL语言的assign语 句将常数更新模块与F变换模块并行运行,将得到P″0、轮密钥rk2i与P1进行异或运算,将P″2、 轮密钥rk2i+1及P3进行异或运算,将得到的P′1、P′3与P″0、P″2分别进行RP轮置换函数运算。
主控制模块(Piccolo):将加密数据64位明文进行分组处理,将初始密钥进行白化密钥扩 展产生白化密钥;分组处理数据与产生的白化密钥进行白化密钥异或运算,运算结果进入轮 函数模块,利用计数器count控制r轮轮函数加密,然后将r轮轮函数加密结果做一次RP-1轮置换函数运算,接着进行白化密钥异或运算,得到正确密文。
有益效果
与现有技术相比,本发明的优点主要体现在以下几个方面:
1.本发明所述方法在算法实现过程中,通过构造RP-1轮置换函数,在r轮运算调用完成后, 利用新增的RP-1轮置换函数,来输出正确密文。整个实现过程改变了现有技术中只能对r-1 轮轮运算的重复调用,而第r轮轮运算需要单独实现造成资源浪费、速度较慢的问题。本发 明对第r轮轮运算的实现可以直接复用前面r-1轮可重复轮函数,由r-1轮重复调用变成了r 轮重复,最大限度的实现了资源的重复调用,由于新构造的RP-1相比原第r轮运算简单,从 而节省了实现该算法所需的硬件面积;
2.在实现过程中,利用Verilog HDL语言的assign语句将密钥扩展与F函数变换并行运行, 将密钥扩展得到的结果与F变换得到的结果同时进行下一步运算;在不延迟加密时间的情况 下,可以有效节省算法硬件实现时寄存器占用数量。
附图说明
图1为本发明所述方法的运算结构图;
图2为Piccolo加密算法轮函数模块(PiccoloRound)结构图;
图3为Piccolo加密算法的F函数模块运算图;
图4为Piccolo加密算法的RP轮置换函数图;
图5为Piccolo加密算法的RP-1轮置换函数图。
具体实施方式
下面将结合附图和实施例对本发明做进一步的说明。
实施例一:
Piccolo-80加密算法优化原理与具体的操作过程如下:
加密运算包括以下模块:常数更新模块(UpdateConstant)、F函数变换模块(Function)、轮 函数模块(PiccoloRound)、主控制模块(Piccolo)。
UpdateConstant模块中包括四个端口,在UpdateConstant模块代码中:三个输入端口分别 为初始密钥key(80位)、轮数i(0<=i<25,i为整数)模5取余数用q(8位)表示及常数ci+1(5位)等于轮数i+1用c_i表示;一个输出端口为子密钥rk(由rk2i、rk2i+1组成)。用连续 赋值(assign)方式,通过常数c_i来构造参数,其中参数生成代码为: constant={c_i[3:7],5'b00000,c_i[3:7],2'b00,c_i[3:7],5'b00000,c_i[3:7]}^32'hf1e2d3c,其 中5'b00000表示5位宽的二进制数。将q的值作为选择初始密钥key的相应位与constant异 或条件,得到最终结果rk。公式如下:其中初始密钥key依次用字母k0-k5表示,
当q等于0或者2时:rk={k2,k3}^constant;
当q等于1或者4时:rk={k0,k1}^constant;
当q等于3时:rk={k4,k4}^constant;
Function模块(F函数)中包括输入端口in、输出端口res,在Function模块代码中:输入 端口为P′0或P′2用in表示,输出端口为P″0或P″2用res表示。在模块中声明16个宽为4位的 寄存器:reg[0:3]sbox[0:15],在initial语句中初始化S盒(sbox)。将输入端口in每四位做S 盒变换,通过连续赋值方式保存到线网型变量t(16位)矩阵中,接着做列混合变换,固定 矩阵M与t如下:
M={
2,3,1,1,
1,2,3,1,
1,1,2,3,
3,1,1,2
}
t={t0,t1,t2,t3}
在有限域上,列混合变换是以t与转置矩阵MT相乘实现。再将列混合变换的结果每四位 做S盒变换,结果赋给res输出端口。
RP运算过程将输入结果的相应位数做置换变换,但RP函数运算步骤包含在轮函数运算 模块(PiccoloRound)中。
Piccolo-80密码算法加密过程主要为r轮(r为25)的轮函数模块运算。轮函数模块包括 五个端口,在轮函数模块代码中:res、state、key、q、计数器count;其中输出端口res代替 statusRP,输入端口state代替P′0、P1、P′2及P3;P′0、P′1、P′2及P′3用线网型变量X[0]、X[1]、 X[2]及X[3]表示。在轮函数模块内部,将包含常数更新模块与F函数变换模块运算,利用 Verilog HDL语言的assign语句将常数更新模块与F函数变换模块并行运行,将常数更新模块 得到的结果直接与F变换模块得到的结果同时进行下一步运算;做到在不延迟加密时间的前 提下,减少寄存器使用数量。将常数更新模块的输出子密钥信号记为rk(由rk2i、rk2i+1组成), F函数变换模块的输出信号记为X[0]与X[2],接着做如下运算步骤:
步骤1:X[1]=state[16:31]^X[0]^rk[0:15];
步骤2:X[3]=state[48:63]^X[2]^rk[16:31];
步骤3:得到结果再做RP运算,将最终结果赋给输出端口信号res。
主控制模块(Piccolo)主要运算包括计数器count控制r(r为25)轮函数模块运算、RP-1轮置换函数运算、白化密钥生成运算和白化密钥异或运算。在主控制模块(Piccolo)运算代码 描述中:一个输出端口result代替及输入端口: key代替k0、k1、k2、k3及k4,state代替P0、P1、P2及P3,t_res代替statusRP,轮函数模 块输入端口res代替P′0、P1、P′2及P3,时钟信号clk(1位)。设置计数器count控制轮函数 模块运算轮数。白化密钥的生成代码:wk0={key[0:7],key[24:31]};wk1={key[16:23], key[8:15]};wk2={key[64:71],key[56:63]};wk3={key[48:55],key[72:79]};
主控制模块(Piccolo)运算代码描述如下:
以上代码运算过程用文字表述如下:
第一步,将计数器count初始化为0,q初始化为0,工作信号ready初始为1;
第二步,将state[0:15]与白化密钥wk0异或,state[32:47]与白化密钥wk1异或,将运算结 果赋给寄存器res;
第三步,将res、key、count、q作为轮函数模块的输入端信号,线网型t_res作为轮函数 模块的输出信号;
第四步,时钟信号clk为上升沿的时候,判断count是否等于25,如果count等于25,res 值不变化,ready值更新为0(表示运算结束);否则count加1,i更新为i+1模5取余数赋 给q,t_res赋给res,key更新为下一轮的子密钥输入数据;跳到第三步,此时ready等于1;
第五步,将输出res值做一次RP-1变换,接着将变换结果第0到15位与白化密钥wk2做 异或运算,第32到47位与白化密钥wk3做异或运算,运算结果连接其他没有运算的位一起 赋给输出端口result。
三个输入端口分别为:时钟信号clk、明文输入plaintext及初始密钥key(80位),一个输 出端口:输出密文ciphertext。其中clk为一位,plaintext、ciphertext为64位。
Piccolo-80算法测试如下:
步骤1:初始明文:plaintext=64'h0123_4567_89AB_CDEF;
初始密钥:key=80'h0011223344_5566778899;
时钟信号:clk=1,跳到步骤2;
步骤2,初始化计时器count=0,初始明文相应位与wk0,wk1异或,跳到步骤3;
步骤3,调用PiccoloRound模块,计数器加count=count+1,跳到步骤4;
步骤4,如果count等于r=25,跳到步骤5;否则跳到步骤3;
步骤5,PiccoloRound模块输出结果做一次新构造RP-1运算跳到步骤6;
步骤6,RP-1运算输出结果相应位与wk2,wk3异或,跳到步骤7;
步骤7,输出加密正确密文结果:result=64’h8d2b_ff99_35f8_4056;
步骤8,加密结束。
实施例二:
Piccolo-128加密算法优化原理与具体的操作过程如下:
加密运算包括以下模块:常数更新模块(UpdateConstant)、F函数变换模块(Function)、轮 函数模块(PiccoloRound)、主控制模块(Piccolo)。
UpdateConstant模块中包括输入端口,在UpdateConstant模块代码中:密钥key(128位)、 常数ci+1(5位)等于轮数i+1(0<=i<31,i为整数)用c_i(8位)表示;输出端口:子密钥 rk(由rk2i、rk2i+1组成),当(2i+2)mod8=0时用线网型变量up_key(128位)表示重新调整密 钥key元素值。用连续赋值(assign)方式,通过常数c_i来构造参数, 其中参数生成代码为:constant={c_i[3:7],5'b00000,c_i[3:7],2'b00,c_i[3:7],5'b00000, c_i[3:7]}^32'hf1e2d3c,其中5'b00000表示5位宽的二进制数。常数c_i的最后两位的值(相 当对4取余)作为选择密钥key的相应位与constant异或条件,得到最终结果rk。代码如下:
每加密4轮,需要重新调整key元素的值,调整公式与代码如下:其中密钥key用k字 母表示,
(k0,k1,k2,k3,k4,k5,k6,k7)←(k2,k1,k6,k7,k0,k3,k4,k5);
assign up_key=(c_i[6:7]==2'b11)?{key[32:47],key[16:31],key[96:111],key[112:127],
key[0:15],key[48:63],key[64:79],key[80:95]}:key;
[0090]Function模块中包括输入端口in、输出端口res,在Function模块代码中:输入 端口为P′0或P′2用in表示,输出端口为P″0或P″2用res表示。在模块中声明16个宽为4位的 寄存器:reg[0:3]sbox[0:15]。在initial语句中初始化S盒(sbox)。将输入端口in每四位做S 盒变换,通过连续赋值方式保存到线网型变量t(16位)矩阵中。接着做列混合变换,通过 固定矩阵M与t如下:
M={
2,3,1,1,
1,2,3,1,
1,1,2,3
3,1,1,2
}
t={t0,t1,t2,t3}
在有限域上,列混合变换是以t与转置矩阵MT相乘实现。再将列混合变换的结果每四位 做S盒变换,结果赋给res输出端口。
RP运算过程将输入结果的相应位数做置换变换,但RP函数运算步骤包含在轮函数运算 模块(PiccoloRound)中。
Piccolo-128密码算法加密过程主要为r轮(r为31)的轮函数模块运算。在轮函数模块包 括五个端口,在轮函数模块代码中:res、state、up_key(128位)、原始密钥key(128位)、 计数器count;其中输出端口:线网型变量res代替statusRP、,输入端口:state代替P′0、P1、 P′2及P3、线网型变量rk(由rk2i、rk2i+1组成);P′0、P′1、P′2及P′3用线网型变量X[0]、X[1]、 X[2]及X[3]表示。在轮函数模块内部,将包含常数更新模块与F函数变换模块运算,利用 Verilog HDL语言的assign语句将常数更新模块与F函数变换模块并行运行,将常数更新模块 得到的结果直接与F变换模块得到的结果同时进行下一步运算;在不延迟加密时间的前提下 减少寄存器的使用数量。将常数更新模块的输出信号记为rk,F函数变换模块的输出信号记 为X[0]与X[2],接着做如下运算步骤:
步骤1:X[1]=state[16:31]^X[0]^rk[0:15];
步骤2:X[3]=state[48:63]^X[2]^rk[16:31];
步骤3:得到结果再做RP运算,将最终结果赋给输出端口信号res。
主控制模块(Piccolo)主要运算包括利用计数器count控制r(r为31)轮函数模块运算、 RP-1轮置换函数运算、白化密钥生成运算和白化密钥异或运算。在下面主控制模块(Piccolo) 运算代码描述中:一个输出端口result代替及输 入端口:key代替k0、k1、k2、k3、k4、k5、k6及k7,重新调整密钥key元素值的中间值 用z表示,state代替P0、P1、P2及P3,t_res代替statusRP,轮函数模块输入res代替P′0、P1、 P′2及P3,时钟信号clk(1位)。设置计数器count控制轮函数模块运算轮数。白化密钥的生 成代码:wk0={key[0:7],key[24:31]};wk1={key[16:23],key[8:15]};wk2={key[64:71],key[120: 127]};wk3={key[112:119],key[72:79]};
主控制模块(Piccolo)运算代码描述如下:
以上代码运算过程用文字表述如下:
第一步,将计数器count初始化为0,寄存器z初始化为0,工作信号ready初始为1;
第二步,将state[0:15]与白化密钥wk0异或,state[32:47]与白化密钥wk1异或,将运算结 果赋给寄存器res,同时密钥key的值赋给寄存器z;
第三步,将res、z、count作为轮函数模块的输入端信号,线网型变量up_key、t_res作为 轮函数模块的输出信号;
第四步,时钟信号clk为上升沿的时候,判断count是否等于31,如果count等于31,则 res、z值不在变化,ready的值更新为0(表示运算结束);否则count加1,t_res赋给res, up_key赋给z,跳到第三步,此时ready等于1;
第五步,将输出res值做一次RP-1变换,接着将结果的第0到15位与白化密钥wk2做异 或运算,第32到47位与白化密钥wk3做异或运算,运算结果连接其他没有运算的位一起赋 给输出端口result。
三个输入端口:时钟信号clk、明文输入plaintext、密钥key(128位),一个输出端 口:输出密文ciphertext。其中clk为一位,plaintext、ciphertext为64位。
Piccolo-128算法测试如下:
步骤1:初始明文:plaintext=64'h0123_4567_89AB_CDEF;
初始密钥:key=128'h0011223344_5566778899_AABBCCDDEEFF;
时钟信号:clk=1,跳到步骤2;
步骤2,初始化计时器count=0,初始明文相应位与wk0,wk1异或,跳到步骤3;
步骤3,调用PiccoloRound模块,计数器加count=count+1,跳到步骤4;
步骤4,如果count等于r=31,跳到步骤5;否则跳到步骤3;
步骤5,PiccoloRound模块输出结果做一次新构造RP-1运算跳到步骤6;
步骤6,RP-1运算输出结果相应位与wk2,wk3异或,跳到步骤7;
步骤7,输出加密正确密文结果:result=64’h5ec4_2cea_657b_89ff;
步骤8,加密结束。
对本发明方法在Xilinx Virtex-5FPGA进行了实验验证,实验数据如下:
Piccolo-80算法:算法的实现面积从现有技术的13124Slices优化到了9897Slices;
Piccolo-128算法:算法的实现面积从现有技术的13246Slices优化到了10306Slices;
同时,加密速度提高了10%。
以上结合具体实施例对本发明进行了详细的说明,这些并非构成对本发明的限制。在不 脱离本发明原理的情况下,本领域的技术人员还可以作出许多变形和改进,包括把此发明方 法应用到其它加密算法,这些也应属于本发明的保护范围。
机译: 一种针对功率分析攻击的对称密钥加密算法的实现方法
机译: 一种针对功率分析攻击的对称密钥加密算法的实现方法
机译: 一种针对功率分析攻击的对称密钥加密算法的实现方法