轻量级分组加密算法PRINCE

轻量级分组加密算法PRINCE

PRINCE算法为基于SPN结构设计的轻量级分组密码算法。算法分组大小为64位,密钥长度为128bit(LED-128),迭代轮数为12轮。每轮轮函数F由S盒替换、扩散层M′、行移位变换、轮常数加变换、轮密钥加变换共5部分组成。分组状态表示为4X4的16个4bit的形式,每个比特块为半字节(4-bit)

PRINCE算法加密流程

(1)S盒替换层

把输出的64位中间状态划分为16个4-bitS0…S15,然后S0…S15依次进入16个相同的4X4S盒(S),输出为B0…B15。

将中间状态中的每4bit通过S盒非线性地变换为另外一个半字节。

(2)扩散层M′

扩散层对应对角矩阵M′=diag(M0,M1,M1,M0),作用在状态X上为:

M′●X=(M0●X1||M1●X2||M1●X3||M0●X4)

这里Xi表示X的第i列,1≤i≤4,矩阵M0,M1分别为:

(3)行移位

与AES的行移位操作相同,将状态的第i行向左循环移动i个块,0≤i≤3

(4)轮常数加层

将64位的中间状态与64位的轮常数逐比特异或。

中间状态为S0…S15(16半字节),轮密钥为C0…C15(16半字节),则输出为Bi=Si+Ci(0≤i≤15)。

(5)轮密钥加层

将64位的中间状态与64位的轮密钥逐比特异或。

中间状态为S0…S15(16半字节),轮密钥为RK0…RK15(16半字节),则输出为Bi=Si+RKi(0≤i≤15)。

轮密钥生成算法

128比特的密钥被分为2个64比特的子密钥k0和k1,其中k1应用于核心部件PRINCEcore,k0和k0′用于算法输入、输出两端的白化,这里k0′=(k0≫1)⊕(k063)。PRINCEcore采用对称结构,中间2轮是对合的,前后5轮除轮常数不同外互为逆变换,轮常数满足RCi⊕RC11−i=α,0≤i≤11,这里α是个固定常数。

PRINCE算法可以通过加密操作来实现解密,即D(k0∥k0′∥k1)(·)=E(k0′∥k0∥k1⊕α)(·)。

  • 23
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄金龙2333

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值