use F31 F32
This commit is contained in:
+26
-25
@@ -48,12 +48,12 @@ class Tea3Model:
|
|||||||
# update R registers
|
# update R registers
|
||||||
self.R_bits[7] = R6
|
self.R_bits[7] = R6
|
||||||
self.R_bits[6] = R5
|
self.R_bits[6] = R5
|
||||||
self.R_bits[5] = xor_vec(R4, G31(R6, R5))
|
self.R_bits[5] = xor_vec(R4, F31(R6, R5))
|
||||||
self.R_bits[4] = R3
|
self.R_bits[4] = R3
|
||||||
self.R_bits[3] = R2
|
self.R_bits[3] = R2
|
||||||
self.R_bits[2] = R1
|
self.R_bits[2] = R1
|
||||||
self.R_bits[1] = R0
|
self.R_bits[1] = R0
|
||||||
self.R_bits[0] = xor_vec(x0, xor_vec(R7, xor_vec(BP(R4), G32(R2, R1))))
|
self.R_bits[0] = xor_vec(x0, xor_vec(R7, xor_vec(BP(R4), F32(R2, R1))))
|
||||||
|
|
||||||
return R7
|
return R7
|
||||||
|
|
||||||
@@ -67,40 +67,41 @@ def xor_vec(a, b):
|
|||||||
def BP(r):
|
def BP(r):
|
||||||
return [r[2], r[7], r[3], r[5], r[6], r[1], r[0], r[4]]
|
return [r[2], r[7], r[3], r[5], r[6], r[1], r[0], r[4]]
|
||||||
|
|
||||||
def G31(X, Y):
|
def F31(X, Y):
|
||||||
x3,x4,x5,x6,x7,x0,x1,x2 = X
|
x0, x1, x2, x3, x4, x5, x6, x7 = X
|
||||||
y3,y4,y5,y6,y7,y0,y1,y2 = Y
|
y0, y1, y2, y3, y4, y5, y6, y7 = Y
|
||||||
|
|
||||||
return [
|
return [
|
||||||
x1 + y0 + x0*y0 + y1 + x0*y1 + x0*x1*y1 + y0*y1 + x0*y0*y1 + x1*y0*y1,
|
x5*x6*y5 + x5*x6 + x5*y5*y6 + x5*y5 + x5*y6 + x6*y5*y6 + y5*y6 + y5 + y6,
|
||||||
1 + y1 + y2 + x1*y2 + x2*y2 + y1*y2 + x1*y1*y2,
|
x6*x7*y6 + x6*x7 + x6*y6*y7 + x6*y7 + x6 + x7*y6 + x7*y7 + y6*y7 + y6 + y7 + 1,
|
||||||
x2 + x3 + x2*y2 + x3*y2 + y3 + x3*y3 + x3*y2*y3,
|
x0*x7*y0 + x0*y0*y7 + x0*y0 + x0 + x7*y7 + y0,
|
||||||
x4*y3 + y4 + x3*y3*y4 + x4*y3*y4,
|
x0*x1*y0 + x0*x1*y1 + x0*x1 + x0*y0*y1 + x0*y1 + x1*y0*y1 + x1 + y1,
|
||||||
1 + y4 + x4*y4 + x5*y4 + y5 + y4*y5 + x5*y4*y5,
|
x1*x2*y2 + x1*x2 + x1*y1 + x1*y2 + x2*y1*y2 + x2*y1 + x2 + y1*y2 + y1 + y2 + 1,
|
||||||
1 + x5 + x6 + y5 + x5*y5 + x6*y5 + y6 + x6*y6 + x6*y5*y6,
|
x2*x3*y3 + x2*y2 + x2 + x3*y2*y3 + x3*y3 + x3 + y2 + y3 + 1,
|
||||||
1 + x6 + x6*y6 + x7*y7 + y6*y7 + x7*y6*y7,
|
x3*x4*y4 + x3*y3 + x3*y4 + x4*y3*y4 + x4*y4 + x4 + y3*y4 + 1,
|
||||||
1 + x7 + y0 + x0*y7 + x7*y7 + x0*x7*y7 + x0*y0*y7 + x7*y0*y7,
|
x4*x5*y5 + x4*y4*y5 + x4*y4 + x4*y5 + x5*y4*y5 + x5 + y5 + 1,
|
||||||
]
|
]
|
||||||
|
|
||||||
def G32(X, Y):
|
|
||||||
x3,x4,x5,x6,x7,x0,x1,x2 = X
|
def F32(X, Y):
|
||||||
y3,y4,y5,y6,y7,y0,y1,y2 = Y
|
x0, x1, x2, x3, x4, x5, x6, x7 = X
|
||||||
|
y0, y1, y2, y3, y4, y5, y6, y7 = Y
|
||||||
|
|
||||||
return [
|
return [
|
||||||
1 + x1 + x0*x1 + y0 + x0*y0 + x1*y0 + y1 + x0*x1*y1 + x0*y0*y1 + x1*y0*y1,
|
x5*x6*y5 + x5*x6 + x5*y5*y6 + x5*y5 + x5*y6 + x6*y5*y6 + y5 + y6 + 1,
|
||||||
1 + y1 + x2*y2 + x1*y1*y2,
|
x6*x7*y6 + x6*x7 + x6*y6*y7 + x6*y7 + x6 + x7*y7 + x7 + y6 + 1,
|
||||||
x3 + x3*y2 + y3 + x2*y3 + x3*y3 + x2*y2*y3 + x3*y2*y3,
|
x0*x7*y0 + x0*x7*y7 + x0*y0*y7 + x0*y0 + x0 + x7*y0*y7 + y0,
|
||||||
x4*y3 + y4 + y3*y4 + x3*y3*y4 + x4*y3*y4,
|
x0*x1*y0 + x0*x1*y1 + x0*y0*y1 + x1*y0*y1 + x1*y0 + x1 + y0*y1 + y1,
|
||||||
x4*y4 + y5 + y4*y5 + x4*y4*y5 + x5*y4*y5,
|
x1*x2*y1 + x1*x2*y2 + x1*x2 + x1*y1*y2 + x1*y1 + x1 + x2*y1*y2 + x2 + y1*y2 + y2,
|
||||||
x5 + x6 + x5*y5 + x6*y5 + y6 + x6*y6 + x6*y5*y6,
|
x2*x3*y3 + x2*y2 + x3*y2*y3 + x3*y3 + x3 + y3,
|
||||||
y6 + x6*y6 + x7*y6 + y7 + y6*y7 + x7*y6*y7,
|
x3*x4*y4 + x3*x4 + x3*y3 + x3*y4 + x4*y3*y4 + x4*y3 + x4 + y3*y4 + y3 + y4,
|
||||||
x0*x7 + y0 + x7*y0 + y7 + x0*y7 + x7*y7 + x0*x7*y7 + x0*y0*y7 + x7*y0*y7,
|
x4*x5*y5 + x4*y4*y5 + x4*y4 + x5*y4*y5 + x5 + y4 + y5 + 1,
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
t = Tea3Model()
|
t = Tea3Model()
|
||||||
for i in range(4):
|
for i in range(6):
|
||||||
print("step "+str(i))
|
print("step "+str(i))
|
||||||
t.step()
|
t.step()
|
||||||
print(pretty_print(t.R_bits[0][0]))
|
print(pretty_print(t.R_bits[0][0]))
|
||||||
|
|||||||
Reference in New Issue
Block a user