如何从Python中的输入字符串生成加密密钥?

2024-09-27 07:17:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我想写一个函数,根据用户输入的词组,使用字母表中的所有26个字母,给用户一个加密代码的密钥,也就是说,如果用户输入“PYTHON”,那么输出看起来像“pythonabcdefgijklmqrsuvxyz”。我该怎么做呢?在


Tags: 函数代码用户字母密钥字母表词组pythonabcdefgijklmqrsuvxyz
1条回答
网友
1楼 · 发布于 2024-09-27 07:17:38

有多种方法可以做到这一点。您需要处理密码短语中的任何重复字母,尽管对于密码短语“PYTHON”来说这不是问题。您还应该忽略密码短语中的空格。在

在这段代码中,我使用了一个集合,以便忽略密码短语中的重复字母,并且字母表中的其他字母如果在密码短语中则不会被添加到键中。在

from string import ascii_uppercase

pass_phrase = 'PYTHON'
used = {' ', '\n'}
key = []
for c in pass_phrase.upper() + ascii_uppercase:
    if c not in used:
        key.append(c)
        used.add(c)
key = ''.join(key)
print(key)

输出

^{pr2}$

将短语转换为大写字母,但不能像大写字母那样处理。;)


这里有一种方法,你可以使用密钥来编码和解码。在

encode = {u: v for u, v in zip(ascii_uppercase, key)}
decode = {v: u for u, v in zip(ascii_uppercase, key)}

src = 'The quick brown fox jumps over the lazy dog.'
out = ''.join([encode.get(c, c) for c in src.upper()])
print(out)
decoded = ''.join([decode.get(c, c) for c in out.upper()])
print(decoded)

输出

QAO KRBTD YLIUG NIV CRFJM ISOL QAO EPXW HI1.
THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG.

编码和解码例程通过使用.get(c, c)不变地传递非字母字符。在

相关问题 更多 >

    热门问题