我目前正在做一个加密解密程序。所以我有一个原始的字符串变量,然后我用字典把字符串转换成特殊的字符串。如果有人再给我一个特殊的字符串,我该怎么解密呢?我正在尝试这个代码,但它不工作
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)
您的编码很难区分0和1。例如,如何表示3015
但是,对于1到9,以下代码就足够了:
输出:
如果您将密钥更改为:
…有一种方法可以让它像这样工作:
输出:
我想你不懂这个密码
对于dnory\ U reverse中的所有密钥(对于所有加密的数字),检查enc\ U str是否包含此密钥,并将相关的解密数字附加到dec\ U列表中
结论:你忘记了秩序
我想你应该把dnory改成这样:
并在enc\u str上使用split(“~”)来获取加密数字的列表
我想我不必描述接下来的步骤,但请记住,在dnory中有“~”,而在使用split()创建的列表中不存在
有用的链接: -https://www.tutorialspoint.com/python/string_find.htm -https://www.tutorialspoint.com/python/string_split.htm
PS公司 dict()不会按字母顺序对键进行排序,而是随机进行排序,因此您的代码会返回各种输出
相关问题 更多 >
编程相关推荐