def cmul_xor_ddt(self, F=None): if F is None: F = GF(self.insize, name='a') cxddt = matrix(ZZ, self.insize, self.outsize) for x in range(1, self.insize): for dx in range(2, self.insize): x2 = (F.fetch_int(x) * F.fetch_int(dx)).integer_representation() y = self[x] y2 = self[x2] dy = y2 ^ y cxddt[dx, dy] += 1 return cxddt
def xor_cmul_ddt(self, F=None): if F is None: F = GF(self.insize, name='a') xcddt = matrix(ZZ, self.insize, self.outsize) for x in range(self.insize): for dx in range(1, self.insize): x2 = x ^ dx y = self[x] y2 = self[x2] dy = (F.fetch_int(y2) * F.fetch_int(y) **(self.outsize - 2)).integer_representation() xcddt[dx, dy] += 1 return xcddt