今回は、Scratchでひみつの暗号を作る方法を紹介します。
暗号化することを英語で「Encrypt」
暗号化した文字をもどすことを「Decrypt」といいます。

暗号化した文字を、友達にわたして、Decryptしてもらえば
ひみつのメッセージがやりとりできますね。
オリジナルの暗号をつくってみましょう。

今回紹介するのはこちら
https://scratch.mit.edu/projects/14106085/
WS0001
 
 を押すと、暗号化するか、戻すかを聞かれますので
暗号化するときは「e」 暗号を戻すときは「d」と入力します。
エンターキーかチェックボタンを押します。

つぎに
eを押した時は「暗号化したい文字 i love you など」を入力します。
(アルファベットのみです)
すると「Encrypt Message(秘密のメッセージ)」の部分に
暗号化された文字が表示されますので
この文字をコピーして、暗号を渡したい人に伝えましょう。

dを押した時は 「ひみつの暗号」を入力します。
暗号を入力してエンターを押すと
「Decrypt Message(暗号解読)」の部分に
解読した暗号が表示されます。 

説明が長くなりましたが、これを元にオリジナルの暗号プログラムを作ってみましょう! 
「続きを読む」をごらんください。 

暗号のつくりかた

暗号は昔からいろいろなひとが研究してきました。
なので暗号の作り方というのは星の数ほどあるのですが
今回は「シーザー暗号」などでも有名な「換字式暗号」を使っていきます。

シーザー暗号

このようにきまった数だけ文字をシフトさせる暗号です。

これだとキーになる数字がわかると全文が解読されてしまうので
もうちょっとむずかしくしよ!となったのが
換字式暗号」です。
Aを01に、Bを02に・・・というように、文字を好きな数字に置き換えていきます。

この置き換える文字をバラバラにしてしまえば解読には時間がかかるでしょう。
数字でなくても単語や絵におきかえるアレンジも可能です。
 
名探偵コナンでこんな絵を見かけませんでしたか?
シャーロックホームズで有名な「踊る人形」という暗号は
 「換字式暗号」でつくられています。

 さて 「換字式暗号」をつかってさっそく暗号化していきましょう。


メッセージを暗号に変換する

暗号化のスクリプトはこのスプライトに書かれています。

WS0002

まず、暗号化するか、暗号解読するかを選ぶ部分
WS0003
 「e」が押されたら「code(答え)」ブロックを呼び出しています。
この「codeブロック」が暗号化するためのプログラムです。 

WS0004
 codeブロックでは、
「○番目の文字はなに?」
「その文字を数字にしてcodedに追加する」
を文字数分繰り返しています。

angou
 一文字づつ、対応した数字に変換して
全ておわるとリストに追加します。
(変数ではなくリストに入れているのは、リストだと文字をコピーすることができるからです。) 

今回はアルファベットの対応表ですが
アルファベットをひらがなに置き換えれば、日本語バージョンを作ることもできますね。 


暗号をかいどくするには?

つぎに数字になった暗号をもとの文章に戻してみましょう。
decodeブロック」が暗号かいどくのプログラムです。
定義ブロックの引数「numbers」のなかに暗号の文章が入ります。
angou
暗号化するときは「aを01、bを02・・・」としていましたが
こんどは逆に「 01をa、02をb・・・」に変換していきます。

暗号化するときのプログラムとほとんど同じですね。
ただ数字が2文字で1セットですので「○番目の文字」だけではなく
その次の文字も一緒にしらべて解読しましょう。

1回に2文字チェックしているので、「letterを○ずつ変える」の部分も
1ずつではなく2ずつ変えないとズレてしまいます。

また、くりかえしの回数も、同じ理由で文字数の半分でよいですね。

オリジナルの暗号をつくるには?

暗号は、ひとつの規則でつくるよりも、2つ3つ組み合わせた暗号のほうが解きにくいです。
シーザー暗号でずらした暗号を、さらに 換字式暗号で変換して・・・というように
くみあわせて作るとよりむずかしい暗号になりますね。

また、さきほど紹介した「踊る人形」のような絵にしてしまったり
特定の単語を違う文字にしてしまう・・・なんていう方法もありますね。

忍者がつかう忍者文字は 換字式暗号ですが
おなじ太さの筒に巻き付けないと読めないようにするなど
(NHKピタゴラスイッチのピタゴラ暗号棒と同じ方式です。)
暗号をくみあわせて情報を守ろうとしていました。

暗号は調べれば調べるほど、色々な方式があって面白いので
みなさんもぜひ、いろいろな暗号を調べて、オリジナルの暗号を作ってみて下さいね!

ちなみにログインなどに使われる「パスワード」は不可逆暗号なので
こういう方式では解読できないようになっています( 'ω')

この記事がよかった!という方は「B!」ボタンや
こちらのボタンを押していただけると元気がでます!