轻量级分组加密算法TWINE
TWINE算法为基于16分支广义Feistel结构设计的轻量级分组密码算法。算法分组大小为64bit,密钥长度分别为80bit(TWINE-80)和128bit(TWINE-128)。TWINE算法共迭代36轮,每轮轮函数F由轮密钥加、S盒替换、P置换3部分组成。
TWINE算法加密流程
(1)轮密钥加层
将第2i+1(i=0,1……6,7)个4bit块分别记为B2i+1,轮密钥为RKi,则输出为B2i+1=B2i+1+RKi(0≤i≤7)
(2)S盒替换层
把(1)中输出的32位中间状态划分为8个4-bit的y0……y7,然后y0…y7依次进入8个相同的4X4S盒,输出为S[y0]……S[y7]。
(3)P置换层
将(2)中输出的64位中间状态划分为16个4-bit的半字节块,然后通过置换表进行换位变换。
轮密钥生成算法
TWINE-80算法密钥扩展算法伪代码如下:
其中CONHr表示第r轮轮常量高位数据,CONLr表示第r轮轮常量低位数据。
ROLi(X)表示将X循环左移位i位。下表为TWINE算法轮常量:
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课