I am using Python 2.7. I have an alphanumeric string, on which I want to perform a encryption/decryption. Whatever I do should remain 2-way and the result should be alphanumeric too.
For example:
str = 'ma6546fbd'
encrypted_data = encrypt_function(str)
decrypted_data = decrypt_function(encrypted_data)
print decrypted_data # I get 'ma6546fbd'
What have I done:
I have written a function
def xor_crypt_string(data, key):
return ''.join(chr(ord(x) ^ ord(y)) for (x,y) in izip(data, cycle(key)))
This takes the data and a key and returns the result, the problem is that it includes special characters too, which I want to avoid.
If you want serious encryption (read unbreakable) then I'd use AES from pycrypto something like this.
That is your ascii message. Now decode the message like this
Any encryption method you make up yourself will be easily breakable by an expert and the one you've shown above falls into that category.
How strict is the alphanumeric requirement?
How about base64 encoding the result of your existing encryption function? You might end up with a few stray '=' padding characters, but you could trim these and calculate and handle the extra padding.