[英]How to make the decrypt function for this encrypt function I made?
[英]How to make a reverse function decrypt for my encrypt function
這是加密 function 並且效果很好
def encrypt(password):
for i in (password):
print(dict_Chiper[i])
not_Encrpyted = ''.join(dict_Chiper[i] for i in password)
Encrpyted = ''.join(reversed(not_Encrpyted))
print(Encrpyted)
return Encrpyted
這是我為 dict_Chiper 制作的用於加密的逆字典
dict_Dechiper = {v: k for k, v in dict_Chiper.items()}
這是有故障的 function。 字典里也有錯嗎? 我應該手動制作字典嗎?
def decrypt(password):
not_Decrypted = reversed(password.split('\n', 12))
print(not_Decrypted)
Decrypted = ''.join(dict_Dechiper[j] for j in (not_Decrypted))
print(Decrypted)
return
考慮到您的password = "abcabc"
和dict_Chiper = {"a":"b", "b":"c", "c": "d", "d":"a"}
,加密結果將是"dcbdcb"
並且,在沒有任何更改的情況下,您的解密代碼最終會引發異常: KeyError: 'dcbdcb'
。
這是因為reversed(password.split('\n', 12))
正在返回一個 list_reverseiterator object ,它實際上不會遍歷您嘗試解密的字符串。 相反,它正在迭代一個看起來像['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'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.