友だちだけに読める手紙
授業中に、友だちへ小さなメモを回したくなったことは、ありませんか。
もし先生に見つかっても、読めなければ、困りません。
文字を、決まりでこっそり変えておけば、決まりを知る人だけが読めます。それが暗号です。
今日のキーワード
| ことば | いみ | れい |
|---|---|---|
| 暗号 | 決まりで文字を変えて、他の人に読めなくすることです。 | |
| 平文 | 暗号にする前の、そのまま読める文です。 | HELLO |
| 暗号文 | 暗号にしたあとの文です。 | KHOOR |
| 鍵 | 暗号にする決まりの、大事な部分です。 | |
| 復号 | 暗号文を、元の平文に戻すことです。 | |
| シーザー暗号 | 文字を決まった数だけ、ずらす暗号です。 |
学生が入力するセルは、このプレビューでは空白です。
シーザー暗号
約2000年前のローマの将軍、シーザーが使ったといわれる暗号です。
文字を、アルファベット順に、決まった数だけずらします。ずらす数が鍵です。
鍵が3なら、AはDに、BはEになります。
小さな確認: ずらす
やってみよう
小さな確認: ずらす
3問挑戦してみましょう。回答はここで採点され、その後は保存されません。点数を残したい場合や、続きから再開したい場合はログインしてください。ログインして点数を保存
答えはここで採点され、保存されません。アカウントがあれば、結果が残ります。
例: 鍵が3のずらし方
| もとの文字 | 3つずらす | 暗号の文字 |
|---|---|---|
| A | A → B → C → D | D |
| H | H → I → J → K | K |
| L | L → M → N → O | O |
| X | X → Y → Z → A | A |
学生が入力するセルは、このプレビューでは空白です。
やってみよう: 暗号にする
ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
key = 3
plain = "HELLO"
secret = ""
for letter in plain:
position = ALPHABET.find(letter)
# 26 で割った余りで、Z のあとを A に戻します。
new_position = (position + key) % 26
secret = secret + ALPHABET[new_position]
print(plain, "->", secret)
# key を 5 に、plain を "SCHOOL" に変えましょう。
例: 鍵を変えると
| 平文 | 鍵 | 暗号文 |
|---|---|---|
| HELLO | 3 | KHOOR |
| SMILE | 3 | VPLOH |
| SCHOOL | 5 | XHMTTQ |
| CAT | 1 | DBU |
学生が入力するセルは、このプレビューでは空白です。
元に戻す
暗号文を読むには、逆向きにずらします。これを復号といいます。
鍵が3なら、KHOOR の各文字を3つ戻します。KはHに、HはEに戻り、HELLO になります。
鍵を知らない人は、戻し方がわかりません。
この暗号は、弱い
シーザー暗号の鍵は、1から25までの25通りしかありません。
全部を試せば、すぐに読めてしまいます。コンピュータなら、一瞬です。
また、よく出る文字から、鍵を当てる方法もあります。英語では、Eがよく出ます。