XOR string against a given key (Python)

Takes an ASCII string and XOR's it against a given "key"

Basically a really crappy encryption mechanism, though it can be useful in cryptanalysis (as it's symmetrical)

Returns the resulting string in a hex encoded form

Details

Snippet

def xorwithmykey(str,key):

    kp = 0
    newbuf = []

    for i in range(len(str)):
        newchar = ord(str[i]) ^ ord(key[kp])
        newbuf.append(chr(newchar))

        kp = kp + 1
        if kp >= len(key):
            kp = 0

    return ''.join(newbuf).encode('hex')

Usage Example

>>> print xorwithmykey('foobarsed','MYS3CUR3K3Y')
2b363c51222721562f

>>> '2b363c51222721562f'.decode('hex')
'+6<Q"\'!V/'

>>> print xorwithmykey('2b363c51222721562f'.decode('hex'),'MYS3CUR3K3Y').decode('hex')
foobarsed