Skip to content

Instantly share code, notes, and snippets.

@AmmarTee
Created December 29, 2021 19:08
Show Gist options
  • Save AmmarTee/c2d745d19207cbad4ab1292d0b1c9b65 to your computer and use it in GitHub Desktop.
Save AmmarTee/c2d745d19207cbad4ab1292d0b1c9b65 to your computer and use it in GitHub Desktop.
Replace the vector and Run your code to get mixed column output
mixColumn = [
[2,3,1,1],
[1,2,3,1],
[1,1,2,3],
[3,1,1,2]
]
def shiftRight(element):
return element[1:]+'0'
def xor(element1, element2):
result = ''
for i in range (0, len(element1)):
if (element1[i] != element2[i]):
result += '1'
else:
result += '0'
return result
def xor2(element):
firstBit = element[0]
element = shiftRight(element)
if (firstBit == '1'):
return xor(element, '00011011')
return element
def xor3(element):
elementAfterXor2 = xor2(element)
return xor(elementAfterXor2, element)
def multiply(elementMCNumber, elementColumn):
elementColumnBinary = '{0:08b}'.format(int(elementColumn, 16))
if (elementMCNumber == 2):
return xor2(elementColumnBinary)
elif (elementMCNumber == 3):
return xor3(elementColumnBinary)
else :
return elementColumnBinary
def calculate(row, column):
multiplyAnswerList = []
for i in range(0, 4):
multiplyAnswerList.append(multiply(row[i], column[i]))
sumMixColumn(multiplyAnswerList)
def multipleColumn(mixColumn, column):
for i in range(0, 4):
calculate(mixColumn[i], column)
def sumMixColumn(multiplyAnswerList):
answer = '00000000'
for entry in multiplyAnswerList:
answer = xor(answer, entry)
print(hex(int(answer, 2)))
def main():
column = [
# COLUMN 1
["EF","40","9F","05"],
# COLUMN 2
["40","EF","18","9D"],
# COLUMN 3
["3C","C3","43","45"],
# COLUMN 4
["C7","AA","4D","C3"],
]
for i in range(0, 4):
print("Column ke-{}: ".format(i+1))
multipleColumn(mixColumn, column[i])
print('\n')
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment