I wrote: > Tuvas wrote: > [...] > >> I've tested my function with a thousand random texts, it >> seems to return the same result as received every time. > > > Unfortunately, the results seem incorrect, self-consistent > as they may be. The following will call your code, and > check the results against 3 popular test vectors. > > --Bryan > > > # Assert false if test fails > > test_key = ( > 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, > 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c, > 0x76, 0x2e, 0x71, 0x60, 0xf3, 0x8b, 0x4d, 0xa5, > 0x6a, 0x78, 0x4d, 0x90, 0x45, 0x19, 0x0c, 0xfe) > > test_plaintext = ( > 0x32, 0x43, 0xf6, 0xa8, 0x88, 0x5a, 0x30, 0x8d, > 0x31, 0x31, 0x98, 0xa2, 0xe0, 0x37, 0x07, 0x34) > > expected = ( > (0x39, 0x25, 0x84, 0x1d, 0x02, 0xdc, 0x09, 0xfb, > 0xdc, 0x11, 0x85, 0x97, 0x19, 0x6a, 0x0b, 0x32), > > (0xf9, 0xfb, 0x29, 0xae, 0xfc, 0x38, 0x4a, 0x25, > 0x03, 0x40, 0xd8, 0x33, 0xb8, 0x7e, 0xbc, 0x00), > > (0x1a, 0x6e, 0x6c, 0x2c, 0x66, 0x2e, 0x7d, 0xa6, > 0x50, 0x1f, 0xfb, 0x62, 0xbc, 0x9e, 0x93, 0xf3)) > > key_sizes = (16, 24, 32) > plaintext = s2num(''.join([chr(c) for c in test_plaintext])) > for i in range(len(key_sizes)): > key_size = key_sizes[i] > key = s2num(''.join([chr(c) for c in test_key[:key_size]])) > expected = s2num(''.join([chr(c) for c in expected[i]])) > ciphertext = encryptb(plaintext, key) > assert ciphertext == expected > deciphertext = decryptb(ciphertext, key) > assert deciphertext == plaintext
Oops, introduced a bug by shadowing "expected". Make the for loop: for i in range(len(key_sizes)): key_size = key_sizes[i] key = s2num(''.join([chr(c) for c in test_key[:key_size]])) expect = s2num(''.join([chr(c) for c in expected[i]])) ciphertext = encryptb(plaintext, key) assert ciphertext == expect deciphertext = decryptb(ciphertext, key) assert deciphertext == plaintext -- --Bryan -- http://mail.python.org/mailman/listinfo/python-list