import base64
AKEY = 'rpa-creds' # AES key must be either 16, 24, or 32 bytes long
def encode(key, clear):
"""
Encode username and passwords using the key available.
:param key:
:param clear:
:return:
"""
enc = []
for i in range(len(clear)):
key_c = key[i % len(key)]
enc_c = (ord(clear[i]) + ord(key_c)) % 256
enc.append(enc_c)
return base64.urlsafe_b64encode(bytes(enc))
def decode(key, enc):
"""
Decode encrypted username and password values.
:param key:
:param enc:
:return:
"""
dec = []
enc = base64.urlsafe_b64decode(enc)
for i in range(len(enc)):
key_c = key[i % len(key)]
dec_c = chr((256 + enc[i] - ord(key_c)) % 256)
dec.append(dec_c)
return "".join(dec)
val1 = encode("rpa-creds", "1qaz#EDC")
# print(val1)
val2 = decode("rpa-creds", "xsmun8Tox8Ps1rRl0brY2w==")
print(val2)
aW1wb3J0IGJhc2U2NAoKQUtFWSA9ICdycGEtY3JlZHMnICAjIEFFUyBrZXkgbXVzdCBiZSBlaXRoZXIgMTYsIDI0LCBvciAzMiBieXRlcyBsb25nCgoKZGVmIGVuY29kZShrZXksIGNsZWFyKToKICAgICIiIgogICAgRW5jb2RlIHVzZXJuYW1lIGFuZCBwYXNzd29yZHMgdXNpbmcgdGhlIGtleSBhdmFpbGFibGUuCiAgICA6cGFyYW0ga2V5OgogICAgOnBhcmFtIGNsZWFyOgogICAgOnJldHVybjoKICAgICIiIgogICAgZW5jID0gW10KICAgIGZvciBpIGluIHJhbmdlKGxlbihjbGVhcikpOgogICAgICAgIGtleV9jID0ga2V5W2kgJSBsZW4oa2V5KV0KICAgICAgICBlbmNfYyA9IChvcmQoY2xlYXJbaV0pICsgb3JkKGtleV9jKSkgJSAyNTYKICAgICAgICBlbmMuYXBwZW5kKGVuY19jKQogICAgcmV0dXJuIGJhc2U2NC51cmxzYWZlX2I2NGVuY29kZShieXRlcyhlbmMpKQoKCmRlZiBkZWNvZGUoa2V5LCBlbmMpOgogICAgIiIiCiAgICBEZWNvZGUgZW5jcnlwdGVkIHVzZXJuYW1lIGFuZCBwYXNzd29yZCB2YWx1ZXMuCiAgICA6cGFyYW0ga2V5OgogICAgOnBhcmFtIGVuYzoKICAgIDpyZXR1cm46CiAgICAiIiIKICAgIGRlYyA9IFtdCiAgICBlbmMgPSBiYXNlNjQudXJsc2FmZV9iNjRkZWNvZGUoZW5jKQogICAgZm9yIGkgaW4gcmFuZ2UobGVuKGVuYykpOgogICAgICAgIGtleV9jID0ga2V5W2kgJSBsZW4oa2V5KV0KICAgICAgICBkZWNfYyA9IGNocigoMjU2ICsgZW5jW2ldIC0gb3JkKGtleV9jKSkgJSAyNTYpCiAgICAgICAgZGVjLmFwcGVuZChkZWNfYykKICAgIHJldHVybiAiIi5qb2luKGRlYykKCgp2YWwxID0gZW5jb2RlKCJycGEtY3JlZHMiLCAiMXFheiNFREMiKQojIHByaW50KHZhbDEpCnZhbDIgPSBkZWNvZGUoInJwYS1jcmVkcyIsICJ4c211bjhUb3g4UHMxclJsMGJyWTJ3PT0iKQpwcmludCh2YWwyKQo=