我正在開發一個程式,該程式使用 Vingere 加密密碼對用戶輸入的單詞和密鑰進行加密。密鑰可以是任意長度并包含重復的字母。用戶輸入的單詞的每個字母都使用其下的關鍵字字母對應的表格行進行加密。加密適用于此處的下表:
我已經開始撰寫代碼,但我不知道如何將加密部分添加到我的代碼中。這是到目前為止的程式:
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 密碼加密用戶輸入和密鑰。如果有人可以提供幫助,我將不勝感激。請顯示您提供的任何輸入的代碼更改。提前致謝!
uj5u.com熱心網友回復:
我覺得你很親近。為了使密碼正常作業,您還需要將您的密鑰大寫
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']
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/421374.html
標籤:
上一篇:在R中解釋函式內部的函式
