Created
December 29, 2021 19:08
-
-
Save AmmarTee/c2d745d19207cbad4ab1292d0b1c9b65 to your computer and use it in GitHub Desktop.
Replace the vector and Run your code to get mixed column output
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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