Vigenere 加密程序
Vigenere Encryption Program
我正在开发一个使用 Vingere 加密密码对用户输入的单词和密钥进行加密的程序。密钥可以是任意长度并且包含重复的字母。用户输入的单词的每个字母都使用其下关键字字母对应的 table 行进行加密。加密在此处使用以下 table:
我编写了代码的开头,但我不知道如何将加密部分添加到我的代码中。这是目前的程序:
import string
phrase = input("Please enter the phrase to be encrypted: ") #prompt user for phrase
key = input("Please enter the key: ") #prompt user for encryption key
# This code returns the encrypted text generated with the help of the key
key = list(key)
if len(phrase) == len(key):
print(key)
else:
for i in range(len(phrase) -
len(key)):
key.append(key[i % len(key)])
phrase = phrase.replace(" ", "")\
.translate(str.maketrans('', '', phrase.punctuation))\
.translate(str.maketrans('','',phrase.digits))\
.upper()
print("" . join(key))
cipher_text = []
for i in range(len(phrase)):
x = (ord(phrase[i]) +
ord(key[i])) % 26
x += ord('A')
cipher_text.append(chr(x))
print("" . join(cipher_text))
print("Your word has been successfully encrypted!")
print("Original word: ", phrase)
print("Encryption: ", cipher_text)
我不确定从现在开始该做什么。我将尝试弄清楚如何获取加密代码,但我需要帮助才能使程序使用 Vigenere 密码加密用户输入和密钥。如果有人可以提供帮助,我将不胜感激。请显示您提供的任何输入的代码更改。提前致谢!
我觉得你很亲近。为了使密码正常工作,您还需要将密钥大写
key = key.upper()
否则,在你的计算中:
x = (ord(phrase[i]) +
ord(key[i])) % 26
您将添加一个与小写字符 (key[i]
) 而不是大写字符的 unicode 关联的数字。
换句话说,phrase[i]
和 key[i]
的数字都应引用大写字符才能进行计算。
进行此更改后,我使用短语 "hello" 和键 "richard" 得到以下输出:
Encryption: ['Y', 'M', 'N', 'S', 'O']
这与图表一致(见下文)。
另外,词组清洗的部分应该是:
phrase = phrase.replace(" ", "")\
.translate(str.maketrans('', '', string.punctuation))\
.translate(str.maketrans('','',string.digits))\
.upper()
我的完整代码如下:
import string
phrase = input("Please enter the phrase to be encrypted: ") #prompt user for phrase
key = input("Please enter the key: ") #prompt user for encryption key
key = key.upper()
# This code returns the encrypted text generated with the help of the key
key = list(key)
if len(phrase) == len(key):
print(key)
else:
for i in range(len(phrase) -
len(key)):
key.append(key[i % len(key)])
phrase = phrase.replace(" ", "")\
.translate(str.maketrans('', '', string.punctuation))\
.translate(str.maketrans('','',string.digits))\
.upper()
print("" . join(key))
cipher_text = []
for i in range(len(phrase)):
x = (ord(phrase[i]) +
ord(key[i])) % 26
x += ord('A')
cipher_text.append(chr(x))
print("".join(cipher_text))
print("Your word has been successfully encrypted!")
print("Original word: ", phrase)
print("Encryption: ", cipher_text)
为了更明确地说明加密工作,这里有一张图片显示了我的示例中每个单词的排列方式:
绿色圆圈表示根据密码加密后的结果。它匹配我们 Encryption: ['Y', 'M', 'N', 'S', 'O']
的输出结果
我正在开发一个使用 Vingere 加密密码对用户输入的单词和密钥进行加密的程序。密钥可以是任意长度并且包含重复的字母。用户输入的单词的每个字母都使用其下关键字字母对应的 table 行进行加密。加密在此处使用以下 table:
我编写了代码的开头,但我不知道如何将加密部分添加到我的代码中。这是目前的程序:
import string
phrase = input("Please enter the phrase to be encrypted: ") #prompt user for phrase
key = input("Please enter the key: ") #prompt user for encryption key
# This code returns the encrypted text generated with the help of the key
key = list(key)
if len(phrase) == len(key):
print(key)
else:
for i in range(len(phrase) -
len(key)):
key.append(key[i % len(key)])
phrase = phrase.replace(" ", "")\
.translate(str.maketrans('', '', phrase.punctuation))\
.translate(str.maketrans('','',phrase.digits))\
.upper()
print("" . join(key))
cipher_text = []
for i in range(len(phrase)):
x = (ord(phrase[i]) +
ord(key[i])) % 26
x += ord('A')
cipher_text.append(chr(x))
print("" . join(cipher_text))
print("Your word has been successfully encrypted!")
print("Original word: ", phrase)
print("Encryption: ", cipher_text)
我不确定从现在开始该做什么。我将尝试弄清楚如何获取加密代码,但我需要帮助才能使程序使用 Vigenere 密码加密用户输入和密钥。如果有人可以提供帮助,我将不胜感激。请显示您提供的任何输入的代码更改。提前致谢!
我觉得你很亲近。为了使密码正常工作,您还需要将密钥大写
key = key.upper()
否则,在你的计算中:
x = (ord(phrase[i]) +
ord(key[i])) % 26
您将添加一个与小写字符 (key[i]
) 而不是大写字符的 unicode 关联的数字。
换句话说,phrase[i]
和 key[i]
的数字都应引用大写字符才能进行计算。
进行此更改后,我使用短语 "hello" 和键 "richard" 得到以下输出:
Encryption: ['Y', 'M', 'N', 'S', 'O']
这与图表一致(见下文)。
另外,词组清洗的部分应该是:
phrase = phrase.replace(" ", "")\
.translate(str.maketrans('', '', string.punctuation))\
.translate(str.maketrans('','',string.digits))\
.upper()
我的完整代码如下:
import string
phrase = input("Please enter the phrase to be encrypted: ") #prompt user for phrase
key = input("Please enter the key: ") #prompt user for encryption key
key = key.upper()
# This code returns the encrypted text generated with the help of the key
key = list(key)
if len(phrase) == len(key):
print(key)
else:
for i in range(len(phrase) -
len(key)):
key.append(key[i % len(key)])
phrase = phrase.replace(" ", "")\
.translate(str.maketrans('', '', string.punctuation))\
.translate(str.maketrans('','',string.digits))\
.upper()
print("" . join(key))
cipher_text = []
for i in range(len(phrase)):
x = (ord(phrase[i]) +
ord(key[i])) % 26
x += ord('A')
cipher_text.append(chr(x))
print("".join(cipher_text))
print("Your word has been successfully encrypted!")
print("Original word: ", phrase)
print("Encryption: ", cipher_text)
为了更明确地说明加密工作,这里有一张图片显示了我的示例中每个单词的排列方式:
绿色圆圈表示根据密码加密后的结果。它匹配我们 Encryption: ['Y', 'M', 'N', 'S', 'O']