def test_mult_gf2(self): # Prove mult by zero x = _mult_gf2(0, 0) self.assertEqual(x, 0) # Prove mult by unity x = _mult_gf2(34, 1) self.assertEqual(x, 34) z = 3 # (x+1) y = _mult_gf2(z, z) self.assertEqual(y, 5) # (x+1)^2 = x^2 + 1 y = _mult_gf2(y, z) self.assertEqual(y, 15) # (x+1)^3 = x^3 + x^2 + x + 1 y = _mult_gf2(y, z) self.assertEqual(y, 17) # (x+1)^4 = x^4 + 1 # Prove linearity works comps = [1, 4, 128, 2**34] sum_comps = 1 + 4 + 128 + 2**34 y = 908 z = _mult_gf2(sum_comps, y) w = 0 for x in comps: w ^= _mult_gf2(x, y) self.assertEqual(w, z)
def test_mult_gf2(self): # Prove mult by zero x = _mult_gf2(0,0) self.assertEqual(x, 0) # Prove mult by unity x = _mult_gf2(34, 1) self.assertEqual(x, 34) z = 3 # (x+1) y = _mult_gf2(z, z) self.assertEqual(y, 5) # (x+1)^2 = x^2 + 1 y = _mult_gf2(y, z) self.assertEqual(y, 15) # (x+1)^3 = x^3 + x^2 + x + 1 y = _mult_gf2(y, z) self.assertEqual(y, 17) # (x+1)^4 = x^4 + 1 # Prove linearity works comps = [1, 4, 128, 2L**34] sum_comps = 1+4+128+2L**34 y = 908 z = _mult_gf2(sum_comps, y) w = 0 for x in comps: w ^= _mult_gf2(x, y) self.assertEqual(w, z)
def test_div_gf2(self): from Crypto.Util.number import size as deg x, y = _div_gf2(567, 7) self.failUnless(deg(y) < deg(7)) w = _mult_gf2(x, 7) ^ y self.assertEqual(567, w) x, y = _div_gf2(7, 567) self.assertEqual(x, 0) self.assertEqual(y, 7)