これは私がしなければならないことです:
英語テキスト用の Vigenere 暗号のバージョンの実装であるスクリプトを Python で作成します。スクリプトでは小文字と大文字を区別する必要があります (つまり、暗号化キーと平文は小文字と大文字で構成できますが、暗号文は大文字にする必要があります)。文字に加えて、平文には他の 4 つの文字があります: コンマ (26)、ドット (27)、ダッシュ (28)、アンダースコア (29) 暗号化関数を mod 30 未満に変更します。
スクリプトは、標準入力から読み取り、標準出力に書き込む必要があります。サイズ k の暗号化キーの入力をユーザーに求める必要があります。標準の Vigenere 暗号のように、キーを繰り返すことはできません。代わりに、ブロック暗号ベースのアイデアに従います。基本的に、平文と暗号文には、鍵のサイズと同じサイズ k のブロックがあります。鍵の長さが平文より短い場合は、前のブロックのブロックサイズ k の暗号文が鍵に連結されます。キーワードが「カーボンデール」で k = 10 の場合の例を次に示します。
Plaintext : SIU_CS-Department_is_the_best Key : CarbondaleUIHAQBBDPTUZ,MUOUCX Ciphertext: UIHAQBBDPTUZ,MUOUCXHTODQTPYUM
そこで、「、」「。」の余計な部分の対処法を知りたいです。「/」「_」。これは、暗号化を行っている関数です。
a = len(key)
b = len(text)
while (len(key1) <= len(text1)):
for i in range(0,a):
num1 = ord(text1[i+var])%97
num2 = ord(key1[i+var])%97
num3 = num1+num2
if (num3 > 25):
encr.append(num3%25)
else:
encr.append(num3)
i + 1
for i in range(0,a):
encr1.append(chr(encr[i+var]+97))
i + 1
for i in range(0,a):
key1.append(encr1[i+var])
i + 1
var = var + a