def test_repeating_key_xor_encode(self): test_text = """Burning 'em, if you ain't quick and nimble I go crazy when I hear a cymbal""" key = "ICE" result_crypt = "0b3637272a2b2e63622c2e69692a23693a2a3c6324202d623d63343c2a26226324272765272\ a282b2f20430a652e2c652a3124333a653e2b2027630c692b20283165286326302e27282f" self.assertEqual(encode.encrypt_repeating_key_xor(test_text, key).lower(), result_crypt.lower())
""" encrypt or decrypt files using repeating key xor """ import argparse import encode import decryptor parser = argparse.ArgumentParser( description='Encrypt or decrypt a given file using repeating key xor.') parser.add_argument('file', type=argparse.FileType('r'), help='the file to encrypt or decrypt') parser.add_argument('key', type=str, help='encryption key') parser.add_argument('outfile', type=str, help='file to output to') parser.add_argument('-d', '--decrypt', action='store_true', help='decrypt the file instead of encrypting it') args = parser.parse_args() outfile = open(args.outfile,'w', newline=None) if args.decrypt: outfile.write(decryptor.decrypt_repeating_key_xor(args.file.read(), args.key).decode('ascii')) else: outfile.write(encode.encrypt_repeating_key_xor(args.file.read(), args.key))