我如何在python中实现vigenere密码

问题描述 投票:0回答:1

我的任务是在过去创建一个caesar密码,现在我正在尝试在python中实现viginere密码。我想知道如何做到这一点。我有一个基本的想法,即将用户的变量用作“明文”,将字母表作为自己的变量,然后添加它们以创建自己的变量,并使用字母表和代码行中的索引:

cipher += alphabet[(alphabet.index(c)+key) % (len(alphabet))

这或许可能是错的。

python vigenere
1个回答
0
投票

以下来自Rosetta Code的网站:

from itertools import starmap, cycle

def encrypt(message, key):

    # convert to uppercase.
    # strip out non-alpha characters.
    message = filter(lambda _: _.isalpha(), message.upper())

    # single letter encrpytion.
    def enc(c,k): return chr(((ord(k) + ord(c)) % 26) + ord('A'))

    return "".join(starmap(enc, zip(message, cycle(key))))

def decrypt(message, key):

    # single letter decryption.
    def dec(c,k): return chr(((ord(c) - ord(k)) % 26) + ord('A'))

    return "".join(starmap(dec, zip(message, cycle(key))))

以下是一个显示如何使用代码的示例:

text = "Beware the Jabberwock, my son! The jaws that bite, the claws that catch!"
key = "VIGENERECIPHER"

encr = encrypt(text, key)
decr = decrypt(encr, key)

print text
print encr
print decr

最后,我们可以看到运行代码的输出应该是什么:

Beware the Jabberwock, my son! The jaws that bite, the claws that catch!
WMCEEIKLGRPIFVMEUGXQPWQVIOIAVEYXUEKFKBTALVXTGAFXYEVKPAGY
BEWARETHEJABBERWOCKMYSONTHEJAWSTHATBITETHECLAWSTHATCATCH
© www.soinside.com 2019 - 2024. All rights reserved.