def test_decrypt_repeating_key_xor(self):
        cyphertext="0b3637272a2b2e63622c2e69692a23693a2a3c6324202d623d63343c2a26226324272765272\
a282b2f20430a652e2c652a3124333a653e2b2027630c692b20283165286326302e27282f"
        key = "ICE"
        text = b"""Burning 'em, if you ain't quick and nimble
I go crazy when I hear a cymbal"""
        self.assertEqual(decryptor.decrypt_repeating_key_xor(cyphertext, key), text)
Example #2
0
"""
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))