2018交行IT精英夏令营-第一题

博客介绍了使用Rijndael组件构建Feistel密码的方法,包括32位明文输入、32位密钥、6轮加密等基本参数,详细说明了SubBytes、MixColumns等操作,还阐述了关键进程和Feistel函数的计算,最后使用密码反馈模式(CFB)加密8条消息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目

使用Rijndael的一些组件构建Feistel密码。密码的基本参数是:

  • 32位明文输入M.
  • 32位密钥K.
  • 6轮加密
  • Feistel函数在2×2状态矩阵上工作,每个结果最多是x的3次方对应的多项式。所有算术运算在 F24 F 2 4 中相对于不可约多项式 px=x4+x+1 p ( x ) = x 4 + x + 1 执行。单个操作更改如下:
    • SubBytes(替换字节):获得输入项在在 F24 F 2 4 下的逆元,然后执行转换:
      y0y1y2y3=1110011100110011x0x1x2x3+1001 [ y 0 y 1 y 2 y 3 ] = [ 1 0 0 0 1 1 0 0 1 1 1 1 0 1 1 1 ] ⋅ [ x 0 x 1 x 2 x 3 ] + [ 1 0 0 1 ]
    • MixColumns(混合列):执行i = 0,1的转换:
      [b0,ib1,i]=[0x030x040x070x03][a0,ia1,i] [ b 0 , i b 1 , i ] = [ 0 x 03 0 x 07 0 x 04 0 x 03 ] ⋅ [ a 0 , i a 1 , i ]
    • ShiftRows(移动行):不要移动第一行,左移第二行。
    • MultRoundKey(多轮加密):密钥 Ki=k1||k2||k3||k4 K i = k 1 | | k 2 | | k 3 | | k 4 和状态矩阵A,
      [k1k2k3k4]=[a1a2a3a4][a1a2a3a4] [ k 1 k 3 k 2 k 4 ] = [ a 1 a 3 a 2 a 4 ] ⋅ [ a 1 ′ a 3 ′ a 2 ′ a 4 ′ ]
      其中 kj,αj k j , α j 都是4位。
    • Key schedule(关键进程): K0,K1,,K5 K 0 , K 1 , … , K 5 计算如下:
      该算法被改变为具有8位,即一个字长度执行每个操作,每个Wi是长度为8位的。
      我们用 T=W4i1<<<3 T : = W 4 i − 1 <<< 3 替换旋转操作,并将圆常数计算为 RCi=xi+3modx4+x+1 R C i = x i + 3 ( m o d x 4 + x + 1 )
      我们定义了两个函数l,r来分别访问8位字的前4位和后4位,使得 T=1T||rT T = 1 ( T ) | | r ( T ) SubBytes函数如上定义并应用为 T=SubBytes(l(T))||SubBytes(r(T)) T : = S u b B y t e s ( l ( T ) ) | | S u b B y t e s ( r ( T ) )
      我们计算2x2的密钥矩阵:
      Ki=[[l(W4i)r(W4i)]l(W4i)r(W4i)[l(W4i+1)r(W4i+1)]l(W4i+1)r(W4i+1)[l(W4i+2)r(W4i+2)]l(W4i+2)r(W4i+2)[l(W4i+3)r(W4i+3)]l(W4i+3)r(W4i+3)] K i = [ [ l ( W 4 i ) ⊗ r ( W 4 i ) ] ⊕ l ( W 4 i ) ⊕ r ( W 4 i ) [ l ( W 4 i + 2 ) ⊗ r ( W 4 i + 2 ) ] ⊕ l ( W 4 i + 2 ) ⊕ r ( W 4 i + 2 ) [ l ( W 4 i + 1 ) ⊗ r ( W 4 i + 1 ) ] ⊕ l ( W 4 i + 1 ) ⊕ r ( W 4 i + 1 ) [ l ( W 4 i + 3 ) ⊗ r ( W 4 i + 3 ) ] ⊕ l ( W 4 i + 3 ) ⊕ r ( W 4 i + 3 ) ]

      然后计算Feistel函数:令第i轮的输入为 Mi=Li||Ri M i = L i | | R i ,其中右边 Ri=r1||r2||r3||r4 R i = r 1 | | r 2 | | r 3 | | r 4 ,其中 rjj=14 r j , j = 1 , … 4 各为4位。
      F(Ri,Ki):= F ( R i , K i ) :=
      A=[a1a2a3a4]:=[r1r2r3r4] A = [ a 1 a 3 a 2 a 4 ] := [ r 1 r 3 r 2 r 4 ]
      A:=SubBytes(A) A := S u b B y t e s ( A )
      A:=MultRoundKey(A) A := M u l t R o u n d K e y ( A )
      A:=MixColumns(A) A := M i x C o l u m n s ( A )
      A:=ShiftRows(A) A := S h i f t R o w s ( A )
      Ri+1:=a1||a2||a3||a4 R i + 1 := a 1 | | a 2 | | a 3 | | a 4
      使用带有初始化向量IV = 0xA7E42F5B的密码反馈模式(CFB)实现密码,以加密8条消息。

答案:交行IT夏令营答案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值