首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python itertools.permutations组合

python itertools.permutations组合
EN

Stack Overflow用户
提问于 2013-11-11 17:58:07
回答 1查看 396关注 0票数 1

我有一个变量:message = "Hello World"和我构建了一个函数来调整它:

代码语言:javascript
复制
def encrypt3(message,key):
    random.seed(key)
    l = range(len(message))
    random.shuffle(l)
    return "".join([message[x] for x in l])

这个函数只是混淆了消息,这样它就可以看起来像这样,例如"Hrl llWodeo“

现在,如果我想再次使用itertools.permutations将其转换为消息,我如何才能做到呢?当我尝试这样做时:print [x for x in itertools.permutations(shuffledMsg)]程序以错误结束,因为它有很多可能性。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-11 19:14:16

这当然是“不可移动”,只要你知道原始种子,因为我们可以简单地重新运行它,以找出每个字符转移到哪里。

代码语言:javascript
复制
import random

def encrypt3(message,key):
    random.seed(key)
    l = range(len(message))
    random.shuffle(l)
    return "".join([message[x] for x in l])


key = 'bob'
message = 'Hello World!'

print(encrypt3(message, key))


def unshuffle(message, key):
    random.seed(key)
    new_list = list(range(len(message)))
    old_list = [None] * len(new_list)

    random.shuffle(new_list)

    for i, old_i in enumerate(new_list):
        old_list[old_i] = message[i]

    return ''.join(old_list)


print(unshuffle(encrypt3(message, key), key))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19912790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档