Учитывая ваши password = "abcabc"
и dict_Chiper = {"a":"b", "b":"c", "c": "d", "d":"a"}
, зашифрованный результат будет "dcbdcb"
, и без каких-либо изменений ваш расшифровывающий код в итоге выдаст исключение: KeyError: 'dcbdcb'
.
Это потому, что reversed(password.split('\n', 12))
возвращает объект list_reverseiterator, который фактически не будет перебирать строку, которую вы пытаетесь расшифровать. Вместо этого он перебирает список, который выглядит как ['dcbdcb']
. Вот почему он выдал ошибку ключа.
Чтобы исправить это, я удалил оператор split, создал строку из обратного итератора и, чтобы сохранить согласованность, возвратил расшифрованный пароль:
def decrypt(password):
not_Decrypted = ''.join(reversed(password))
Decrypted = ''.join(dict_Dechiper[j] for j in (not_Decrypted))
return Decrypted
И из-за разделения '\n'
можно предположить, что вы хотите расшифровать строку, содержащую несколько паролей, разделенных \n
. Для этого потребуется внести несколько изменений:
def decrypt(password):
not_Decrypted_list = [''.join(reversed(each_password)) for each_password in password.split('\n', 12)]
not_Decrypted = '\n'.join(not_Decrypted_list)
Decrypted = ''.join(dict_Dechiper[j] for j in (not_Decrypted))
return Decrypted
not_Decrypted_list
: список с обратными зашифрованными паролями, разделенными '\n'
. not_Decrypted
: строка, содержащая not_Decrypted_list
элементов, разделенных '\n'
Обратите внимание, что в вашем dict_Dechiper
должно быть отображение '\n': '\n'
. В противном случае он выдаст KeyError: '\n'