def getPartitionNum(self, trace, tnum): key = trace.getKnownKey(tnum) text = trace.getTextin(tnum) guess = [0] * 16 for i in range(0, 16): guess[i] = AES128_8bit.getHW(sbox(text[i] ^ key[i])) return guess
def getPartitionNum(self, trace, tnum): key = trace.getKnownKey(tnum) ct = trace.getTextout(tnum) #Convert from initial key to final-round key, currently #this assumes AES if len(key) == 16: rounds = 10 else: raise ValueError("Need to implement for selected AES") key = keyScheduleRounds(key, 0, rounds) guess = [0] * 16 for i in range(0, 16): st10 = ct[AES128_8bit.INVSHIFT[i]] st9 = inv_sbox(ct[i] ^ key[i]) guess[i] = AES128_8bit.getHW(st9 ^ st10) return guess