簡體   English   中英

如何為我的加密 function 進行反向 function 解密

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM