ENCRYPT : Во-первых, вы encrypt
метод делаете X раз одно и то же (X - длина пароля), для каждой буквы вы вычисляете весь зашифрованный результат, вам не нужно, просто для каждой буквы получите значение от dict_cipher
def encrypt(password):
encrypted = ''
for i in password:
encrypted += dict_cipher[i]
return "".join(reversed(encrypted))
DECRYPT , поскольку последняя операция encrypt
обращена, здесь она должна быть первой, затем читать каждый блок c из 12 и найти письмо в dict_decipher
def decrypt(encrypted):
decrypted = ''
encrypted = "".join(reversed(encrypted))
for i in range(0, len(encrypted), 12):
part = encrypted[i:i + 12]
decrypted += dict_decipher[part]
return decrypted
с демо
# Fill both dicts
for a in (ascii_letters + digits):
dict_cipher[a] = "".join(sample(ascii_letters + digits, 12))
dict_decipher = {v: k for k, v in dict_cipher.items()}
print(dict_cipher) # {'a': 'eBx8zu62KPGi', 'b': '2ofrIamwV7XJ', 'c': '01PJWsiIqajl', ...
print(dict_decipher) # {'eBx8zu62KPGi': 'a', '2ofrIamwV7XJ': 'b', '01PJWsiIqajl': 'c', ...
value = "abc"
ee = encrypt(value)
print(ee) # ljaqIisWJP10JX7VwmaIrfo2iGPK26uz8xBe
dd = decrypt(ee)
print(dd) # abc