Пример #1
0
def MixColumns(state):
	StateArray_mixed =[[0 for j in range(4)] for i in range(4)]
	a = np.array([2,3,1,1])
	for i in range(4):
		for j in range(4):
			StateArray_mixed[i][j] = calc.mod_GF2(calc.mul_GF2(state[i][0],a[0])) ^ calc.mod_GF2(calc.mul_GF2(state[i][1],a[1])) ^ calc.mod_GF2(calc.mul_GF2(state[i][2],a[2])) ^ calc.mod_GF2(calc.mul_GF2(state[i][3],a[3]))
			a = np.roll(a,1)
 
	return StateArray_mixed
Пример #2
0
def InvMixColumns(state):
    StateArray_mixed = [[0 for j in range(4)] for i in range(4)]
    a = np.array([14, 11, 13, 9])
    for i in range(4):
        for j in range(4):
            StateArray_mixed[i][j] = calc.mod_GF2(
                calc.mul_GF2(state[i][0], a[0])) ^ calc.mod_GF2(
                    calc.mul_GF2(state[i][1], a[1])) ^ calc.mod_GF2(
                        calc.mul_GF2(state[i][2], a[2])) ^ calc.mod_GF2(
                            calc.mul_GF2(state[i][3], a[3]))
            a = np.roll(a, 1)

    return StateArray_mixed
Пример #3
0
def g(inData,round):
	outData = inData[1:]
	outData.append(inData[0])
	for i in range(4):
		outData[i] = S_box[(outData[i] & 0xf0) >> 4][outData[i] & 0x0f] 
	outData[0] = outData[0] ^ calc.mod_GF2(1 << (round-1))
	return outData
Пример #4
0
def g(inData, round):
    outData = inData[1:]
    outData.append(inData[0])
    for i in range(4):
        outData[i] = S_box[(outData[i] & 0xf0) >> 4][outData[i] & 0x0f]
    outData[0] = outData[0] ^ calc.mod_GF2(1 << (round - 1))
    return outData