def testRightRotationOperationWithShiftMajorThanBits(self): """ testo l'operazione di rotazione a destra di un valore maggiore di 32 bit """ r = rightRotationOperation(self.a, 49) result = 0b11010101011111111000000001111111 self.assertEqual(result, r)
def testRightRotationOperationWithShift33(self): """ testo l'operazione di rotazione a destra di 33 bit """ r = rightRotationOperation(self.a, 33) result = 0b10000000011111111101010101111111 self.assertEqual(result, r)
def testRightRotationOperationWithShiftMinorThanBits(self): """ testo l'operazione di rotazione a destra di un valore diverso da zero (e minore di 32) """ r = rightRotationOperation(self.a, 17) result = 0b11010101011111111000000001111111 self.assertEqual(result, r)
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 rotR1(cls,value): ''' Effettua la rotazione a destra di un bit del valore passato come parametro ''' return rightRotationOperation(value,1,16)
def testRightRotationOperationWithShiftEqualToBits(self): """ testo l'operazione di rotazione a destra di un valore uguale al numero di bits """ r = rightRotationOperation(self.a, 32) self.assertEqual(self.a, r)
def testRightRotationOperationWithoutRotation(self): """ testo l'operazione di rotazione a destra di un valore zero """ r = rightRotationOperation(self.a, 0) self.assertEqual(self.a, r)