クリアコード暗号化の実装

PythonPythonBeginner
オンラインで実践に進む

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

このプロジェクトでは、「クリアコード暗号化」と呼ばれる簡単な暗号化と復号化アルゴリズムを実装する方法を学びます。この暗号化方法は、清末の中国の初期の電信通信システムで使用されていました。

👀 予習

## 例1
numb = 1530; encryption_text = "0383"
## 例2
numb = 0; encryption_text = "9853"
## 例3
numb = 12345; encryption_text = None

🎯 タスク

このプロジェクトでは、以下を学びます。

  • 暗号化方法とその基本原理を理解する方法
  • 暗号化を実行するための plain_code_encryption(numb) 関数を実装する方法
  • さまざまな入力で暗号化関数をテストする方法
  • ユーザー入力を処理して暗号化関数を呼び出す方法

🏆 成果

このプロジェクトを完了すると、以下ができるようになります。

  • 「クリアコード暗号化」方法とその歴史的背景を説明する
  • Python を使って基本的な暗号化と復号化アルゴリズムを実装する
  • さまざまな入力シナリオで暗号化関数をテストして検証する
  • 暗号化スクリプトにユーザー入力と出力を統合する

暗号化方法を理解する

このステップでは、「クリアコード暗号化」プロジェクトで使用される暗号化方法について学びます。

暗号化方法は以下のように機能します。

  1. クリアコードの 4 桁をそれぞれ暗号化キーの 4 桁に加えます。
  2. 各桁の加算で、合計が 10 以上の場合は、10 を省略して、1 の位の桁のみを残します。
  3. 復号化する際は、パスワードから復号化キーの 4 桁を引いてクリアコードを求め、対応するテキストを見つけます。

たとえば、クリアコードが 1530 で、暗号化キーが 9853 の場合を考えてみましょう。

  1. 1 桁目を加算:1 + 9 = 10、10 を 0 として扱う。
  2. 2 桁目を加算:5 + 8 = 13、10 を省略して 3 を残す。
  3. 3 桁目を加算:3 + 5 = 8。
  4. 4 桁目を加算(10 + 3 = 13、10 を省略して 3 を残す)。

最終的な暗号化されたテキストは「0383」です。

plain_code_encryption(numb) 関数を実装する

このステップでは、plain_code.py ファイルに plain_code_encryption(numb) 関数を実装します。

  1. コードエディタで plain_code.py ファイルを開きます。
  2. plain_code_encryption(numb) 関数を見つけます。
  3. 関数を実装して、以下のタスクを行います。
    • 0 から 9999(0 と 9999 を含む)の任意の数を入力し、それに 9853 を加えて、加算後の 4 桁の数(str 形式)を取得して返します。
    • 入力数が 4 桁未満の場合、欠けている桁を 0 で埋めます。たとえば、入力数が 32 の場合、0032 として扱う必要があります。
    • 同じ桁の数を加えます。合計が 10 以上の場合は、10 を省略して、1 の位の桁のみを残します。
    • 入力数が 0 から 9999 の範囲外の場合、None を返します。

以下は、plain_code_encryption(numb) 関数の完成したコードです。

def plain_code_encryption(numb: int) -> str:
    if numb < 0 or numb > 9999:
        return None

    numb_str = str(numb).zfill(4)
    key_str = "9853"
    encryption_text = "".join(
        str((int(n) + int(k)) % 10) for n, k in zip(numb_str, key_str)
    )

    return encryption_text

plain_code_encryption(numb) 関数をテストする

このステップでは、提供された例を使って plain_code_encryption(numb) 関数をテストします。

  1. コードエディタで plain_code.py ファイルを開きます。
  2. ファイルの末尾に以下のコードを追加します。
if __name__ == "__main__":
    print(plain_code_encryption(1530))  ## 出力:"0383"
    print(plain_code_encryption(0))     ## 出力:"9853"
    print(plain_code_encryption(12345)) ## 出力:None
  1. ファイルを保存し、コマンド python3 plain_code.py を使ってスクリプトを実行します。
  2. 出力が予想される結果と一致することを確認します。

ユーザー入力を処理する

このステップでは、スクリプトを修正してユーザー入力を受け付け、ユーザーが提供した数値で plain_code_encryption(numb) 関数を呼び出します。

  1. コードエディタで plain_code.py ファイルを開きます。
  2. 前のステップで追加したコードを見つけ、以下のコードに置き換えます。
if __name__ == "__main__":
    txt = int(input())
    print(plain_code_encryption(txt))
  1. ファイルを保存し、コマンド python3 plain_code.py を使ってスクリプトを実行します。
  2. プロンプトが表示されたら、0 から 9999 の間の数値を入力し、スクリプトは暗号化されたテキストを表示します。

おめでとうございます!あなたは「クリアコード暗号化」プロジェクトを完了しました。あなたは暗号化方法を実装し、さまざまな入力でそれをテストする方法を学びました。

✨ 解答を確認して練習

まとめ

おめでとうございます!このプロジェクトを完了しました。あなたの技術を向上させるために、LabEx でさらに多くの実験を行って練習することができます。