def testLeftRotationOperationWithShiftMajorThanBits(self): """ testo l'operazione di rotazione a sinistra di un valore diverso da zero e maggiore di 32 """ l = leftRotationOperation(self.a, 49) result = 0b01010101111111100000000111111111 self.assertEqual(result, l)
def testLeftRotationOperationWithShift33(self): """ testo l'operazione di rotazione a sinistra di un valore uguale a 33 """ l = leftRotationOperation(self.a, 33) result = 0b00000001111111110101010111111110 self.assertEqual(result, l)
def b(cls,l,r): ''' Effettua le operazioni della funzione b. Le operazioni effettuate sono le seguenti (pag 171 della rfc): .) <<< = rotazione verso sinistra (non shift) .) >>> = rotazione verso sinistra (non shift) .) ^ = xor .) a mod b: prendo i b bit di a, a partire da destra ''' r = r ^ leftRotationOperation(l,17) # r = r ^ (l <<< 17) l = (l + r) & 0xffffffffL # l = (l+r) mod (2^32) ---> prende i 32bit a destra r = r ^ cls.xswap(l) # r = r ^ cls.xswap(l) l = (l + r) & 0xffffffffL r = r ^ leftRotationOperation(l,3) # r = r ^ (l <<< 3) l = (l + r) & 0xffffffffL r = r ^ rightRotationOperation(l,2) # r = r ^ (l >>> 2) l = (l + r) & 0xffffffffL return (l,r)
def testLeftRotationOperationWithShiftEqualToBits(self): """ testo l'operazione di rotazione a sinistra di un valore uguale al numero di bits (32) """ l = leftRotationOperation(self.a, 32) self.assertEqual(self.a, l)
def testLeftRotationOperationWithoutRotation(self): """ testo l'operazione di rotazione a Sinistra di un valore uguale a 0 """ l = leftRotationOperation(self.a, 0) self.assertEqual(self.a, l)