python - 使用键重新排列字符串

标签 python algorithm string encryption

我想使用 Python 根据给定的键随机重新排列字符串的各个部分。我也想用相同的 key 恢复原始字符串:

def rearrange(key, data):
    pass

def restore(key, rearranged_data):
    pass

效率并不重要。有什么想法吗?

编辑:

最佳答案

使用 random.shuffle 并将 key 作为种子:

import random

def rearrange(key, data):
    random.seed(key)
    d = list(data)
    random.shuffle(d)
    return ''.join(d)

def restore(key, rearranged_data):
    l = len(rearranged_data)
    random.seed(key)
    d = range(l)
    random.shuffle(d)
    s = [None] * l
    for i in range(l):
        s[d[i]] = rearranged_data[i]
    return ''.join(s)


x = rearrange(42, 'Hello, world!')
print x
print restore(42, x)

输出:

oelwrd!, llHo
Hello, world!

关于python - 使用键重新排列字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2345628/

相关文章:

string - Lua 模式替换多个分号

python 非阻塞 non-messing-my-tty 按键检测

python - 使用 for 循环创建一定数量的输入框,但只能从最后一个输入框获取最后一个值

algorithm - 二叉树查找最接近且大于 key 的数字

algorithm - 精确检查两个具有双坐标的矩形是否相交

regex - 在 Perl 代码中改进(优化)现有字符串替换的任何建议?

java - 如何将字符串 "AXA || BXB && CXC || BXB"替换为 "AXA OR BXB && CXC OR BXB"?

python - PulpSolverError : PuLP: Error while trying to execute glpsol in Python 2. 7

python - 使用 django 模板确定我是否需要在 HTML 中引用

algorithm - 哈密​​顿路径和社交图谱算法