def test_ecb_padding(self): key = "My secret key" encrypter = get_ecb_encrypter(key) encrypt_image_file(SOURCE_IMAGE_42, encrypter, "examples/ecb-42.png") decrypter = get_ecb_decrypter(key) decrypt_image_file("examples/ecb-42.png", decrypter, "examples/ecb-42-d.png") difference = _get_images_difference(SOURCE_IMAGE_42, "examples/ecb-42-d.png") self.assertTrue(difference <= TARGET_DIFFERENCE_42)
def test_make_caesar(self): offset = 128 caesar_encrypter = lambda image: bytes([(pixel + offset) % 0xff for pixel in image]) caesar_decrypter = lambda image: bytes([(pixel - offset) % 0xff for pixel in image]) encrypt_image_file(SOURCE_IMAGE_TUX, caesar_encrypter, "examples/caesar.png") decrypt_image_file("examples/caesar.png", caesar_decrypter, "examples/caesar-d.png") difference = _get_images_difference(SOURCE_IMAGE_TUX, "examples/caesar-d.png") self.assertTrue(difference == 0.00)
def test_make_otp(self): cipher = get_stream_cipher(seed="My secret seed") encrypt_image_file(SOURCE_IMAGE_TUX, cipher, "examples/otp.png") # Decrypt correctly decrypt_image_file("examples/otp.png", cipher, "examples/otp-d.png") difference = _get_images_difference(SOURCE_IMAGE_TUX, "examples/otp-d.png") self.assertTrue(difference <= TARGET_DIFFERENCE_TUX) # Use a wrong cipher to decrypt cipher = get_stream_cipher(seed="Not my secret seed") decrypt_image_file("examples/otp.png", cipher, "examples/otp-d.png") difference = _get_images_difference(SOURCE_IMAGE_TUX, "examples/otp-d.png") self.assertTrue(difference > TARGET_DIFFERENCE_TUX)
def test_sanity(self): invert = lambda x: bytes([255 - y for y in x]) image = load_image(SOURCE_IMAGE_TUX) original = image.b inverted = encrypt_image(image, invert) self.assertTrue(original != inverted.b) inverted = decrypt_image(image, invert) self.assertTrue(original == inverted.b) key = "My secret key" encrypter = get_ecb_encrypter(key) encrypt_image_file(SOURCE_IMAGE_TUX, encrypter, "examples/ecb.png") # Decrypt correctly decrypter = get_ecb_decrypter(key) decrypt_image_file("examples/ecb.png", decrypter, "examples/ecb-d.png") difference = _get_images_difference(SOURCE_IMAGE_TUX, "examples/ecb-d.png") self.assertTrue(difference <= TARGET_DIFFERENCE_TUX) # Use a wrong decrypter decrypter = get_ecb_decrypter("Some other key") decrypt_image_file("examples/ecb.png", decrypter, "examples/ecb-x.png") difference = _get_images_difference(SOURCE_IMAGE_TUX, "examples/ecb-x.png") self.assertTrue(difference > TARGET_DIFFERENCE_TUX)
def test_make_shorter_invert(self): inverter = lambda image: [0xff - pixel for pixel in image] encrypt_image_file(SOURCE_IMAGE_TUX, inverter, "examples/inverted.png") decrypt_image_file("examples/inverted.png", inverter, "examples/inverted-d.png") difference = _get_images_difference(SOURCE_IMAGE_TUX, "examples/inverted-d.png") self.assertTrue(difference == 0.00)