首页 > 解决方案 > 如何替换字典中所有出现的指定字符

问题描述

我目前正在研究一个加密解密程序。所以我有一个原始字符串变量,然后我使用我的字典将字符串转换为特殊字符串。现在如果有人再次给我特殊字符串,我该如何解密它?我正在尝试这段代码,但它不起作用。

enc_str= "`~```~`~`````" # this is 0315
dnory = {'0': '~', '1': '~`', '2': '~``', '3': '~```', '4': '~````', '5': '~`````', '6': '~``````', '7': '~```````', '8': '~````````', '9': '~`````````'}

def decrypt(dnory,enc_str):
    dec_list = []
    dnory_reverse = dict([[v,k] for k,v in dnory.items()])
    for key in dnory_reverse :
        if(enc_str.find(key)>0) :
            dec_list.append(dnory_reverse[key])
    print(dec_list)

decrypt(dnory,enc_str)

标签: pythonencryption

解决方案


您的编码很难区分 0 和 1。例如,您将如何表示 3015?

但是,对于 1 到 9,以下代码就足够了:

print(''.join(str(len(i)) for i in enc_str.split('~')))

输出:

1315

如果您将密钥更改为此:

dnory = {'0': '~', '1': '~`', '2': '~``', '3': '~```', '4': '~````', '5': '~`````', '6': '~``````', '7': '~```````', '8': '~````````', '9': '~`````````'}

...有一种方法可以让它像这样工作:

enc_str= "~```~`~`````"
print(''.join(str(len(i)) for i in enc_str.split('~')))

输出:

0315

推荐阅读