这次换个玩法,作业先奉上~
作业案例
输入学号后两位数字 n,出生年份后两位数字 m (00后取99年)。
x1 = n mod 64,
x2 = (n + 20) mod 64,
x3 = (n + 40) mod 64,
初始向量 IV = m mod 64,
K = (1 0 0 1 1 0), Ek(z) = z ⊕ k
求四种模式下的y1, y2, y3?
Python版如下:
# ECB模式
def ecb_enc():
return x1^key, x2^key, x3^key
# CBC模式
def cbc_enc():
return (iv^x1)^key, (((iv^x1)^key)^x2)^key, (((((iv^x1)^key)^x2)^key)^x3)^key
# OFB模式
def ofb_enc():
return x1^(iv^key), x2^((iv^key)^key), x3^(((iv^key)^key)^key)
# CFB模式
def cfb_enc():
return x1^(iv^key), x2^(x1^(iv^key)^key), x3^(x2^(x1^(iv^key)^key)^key)
# 输入学号后两位数字 n,出生