I am trying to obfuscate a string so that it is not easily read by users. However, the obfuscated string should be in form a string that can be stored in a text file, not in byte form to be stored in binary file. I tried some approaches from Simple way to encode a string according to a password? but was not successful:
def myencode(ori_str, key):
enc = []
for i in range(len(ori_str)):
key_c = key[i % len(key)]
enc_c = (ord(ori_str[i]) + ord(key_c)) % 256
enc.append(enc_c)
return base64.urlsafe_b64encode(bytes(enc))
Output of above fn needs to be stored in a binary file. Changing ..._b64encode(bytes(enc))
to ..._b64encode(enc)
does not work.
How can I achieve similar result that can be stored in a text file?
Edit: The corresponding decode fn is as follows:
def mydecode(enc_str, key):
dec = []
enc_str = base64.urlsafe_b64decode(enc_str)
for i in range(len(enc_str)):
key_c = key[i % len(key)]
dec_c = chr((256 + enc_str[i] - ord(key_c)) % 256)
dec.append(dec_c)
return "".join(dec)