'TypeError: ord() expected string of length 1, but int found in xor encryption

import sys
KEY = "x"
def xor(data, key):
        key = str(key)
        l = len(key)
        output_str = ""
        for i in range(len(data)):
                current = data[i]
                current_key = key[i % len(key)]
                output_str += chr(ord(current) ** ord(current_key))
        return output_str
def printCiphertext(ciphertext):
        print('{ 0x' + ', 0x'.join(hex(ord(x))[2:] for x in ciphertext) + ' };')
try:
        plaintext = open(sys.argv[1], "rb").read()
except:
        print("File argument needed! %s " % sys.argv[0])
        sys.exit()
ciphertext = xor(plaintext, KEY)
print('{ 0x' + ', 0x'.join(hex(ord(x))[2:] for x in ciphertext) + ' };')

While running this code I am getting the error follows:

output_str += chr(ord(current) ^ ord(current_key))

TypeError: ord() expected string of length 1, but int found



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source