20 lines
No EOL
946 B
Text
20 lines
No EOL
946 B
Text
// AR7XAR18XAR3
|
|
|
|
import "../../bitwise/32/xor.code" as XOR
|
|
|
|
def RR7(field[32] b) -> (field[32]):
|
|
return [b[25], b[26], b[27], b[28], b[29], b[30], b[31], b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7], b[8], b[9], b[10], b[11], b[12], b[13], b[14], b[15], b[16], b[17], b[18], b[19], b[20], b[21], b[22], b[23], b[24]]
|
|
|
|
def RR18(field[32] b) -> (field[32]):
|
|
return [b[14], b[15], b[16], b[17], b[18], b[19], b[20], b[21], b[22], b[23], b[24], b[25], b[26], b[27], b[28], b[29], b[30], b[31], b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7], b[8], b[9], b[10], b[11], b[12], b[13]]
|
|
|
|
def RS3(field[32] b) -> (field[32]):
|
|
return [0, 0, 0, b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7], b[8], b[9], b[10], b[11], b[12], b[13], b[14], b[15], b[16], b[17], b[18], b[19], b[20], b[21], b[22], b[23], b[24], b[25], b[26], b[27], b[28]]
|
|
|
|
def main(field[32] a) -> (field[32]):
|
|
u = RR7(a)
|
|
v = RR18(a)
|
|
w = RS3(a)
|
|
x = XOR(u, v)
|
|
z = XOR(w, x)
|
|
return z |