Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonでVigenere暗号を使用して文字列を暗号化するプログラム


小文字のアルファベット文字列テキストがあり、keyと呼ばれる別の文字列があるとします。 text[i]のすべての文字がオフセットキー[i]で右側に移動する新しい文字列を見つける必要があります。ここでは、アルファベットのkey [i]の位置で表されるオフセット(A =0、B =1など)。文字がオーバーフローすると、反対側に巻き付けられます。

したがって、入力がtext ="code"、key ="team"の場合、出力は "vsdq"

になります。

これを解決するには、次の手順に従います-

  • cip:=新しいリスト
  • start:='a'のASCII
  • テキストからのlとキーからのkごとに、
    • shift:=(kのASCII)-開始
    • pos:=start +((ASCII of l)-start + shift)mod 26
    • cipの最後にposの文字を挿入
  • cipの文字列を結合してreturn

理解を深めるために、次の実装を見てみましょう-

class Solution:
   def solve(self, text, key):
      cip = []
      start = ord('a')
      for l, k in zip(text, key):
         shift = ord(k) - start
         pos = start + (ord(l) - start + shift) % 26
         cip.append(chr(pos))
      return ''.join([l for l in cip])
ob = Solution()
text = "code"
key = "team"
print(ob.solve(text, key))

入力

"code", "team"

出力

vsdq

  1. %を使用したPythonでの文字列フォーマット?

    Pythonでは、文字列は-などのさまざまなメソッドを使用してフォーマットできます。 %の使用 {}の使用 テンプレート文字列の使用 そして、このセクションでは「%」文字列フォーマットオプションについて説明します。 文字列のフォーマットには2つの種類があります- 文字列フォーマット式:Cタイプのprintfに基づく 文字列フォーマットメソッドの呼び出し:このオプションは、Python2.6以降で使用できます。 %を使用したフォーマットは、Cタイプのprintfに由来し、次のタイプをサポートします 整数-%d フロート-%f 文字列-%s 16進数-%x 8進数-%o

  2. 指定された文字列のsetを使用して母音の数をカウントするPythonプログラム

    このプログラムでは、ユーザー入力文字列を指定します。この文字列の母音の数を数える必要があります。ここでは、Pythonでsetを使用します。 Setは、反復可能、変更可能で、重複する要素がない、順序付けされていないコレクションデータ型です。 例 Input str1=pythonprogram Output 3 アルゴリズム Step 1: first we use one counter variable which is used to count the vowels in the string. Step 2: creating a set of vowels. Step 3: the