俳句をシーザー暗号化するプログラムを作ってみました

By | Date : 2015/03/10 ( Last Update : 2016/04/12 ) | 241 views

Nia-TN-SDF-A2

こんにちはー!ニアです。

今まで、ミョウガさんとともに俳句を縦書きに表示するプログラムをいくつか作りましたが、

今回は私が所属している研究室の研究分野に関連して、俳句をシーザー暗号化してしまうプログラムを作成してみました。

 

 

1. シーザー暗号とは

暗号といってもいろいろ種類がありますが、ここでは古代ローマの軍事的指導者ガイウス・ユリエル・カエサルさんが使用していたシーザー暗号(Caesar cipher)を使用していきます。

シーザー暗号とは換字式暗号の1つであり、平文の各文字を辞書順(コンピューター上では、文字コードの順)に3文字ずつずらしていく暗号方式です。ずらす文字数は3以外でもよく、例えば13文字ずつずらすROT13などがあります。

暗号文から平文へ復号するには、ずらした文字数分だけ逆方向にずらせばOKです。

 

プログラムの動作としては 、文字列をイテレーターで1文字ずつ取り出して(取り出した文字はchar型です)、暗号化・復号しています。

実行結果

実行結果

 

2. F#で俳句をシーザー暗号化してみました

お次は、F#で俳句を暗号化するプログラムを作っていきます(C++の標準入力では半角スペースの扱いがちょっと煩わしいので・・・)。

※GitHubではこちらです →  https://gist.github.com/Nia-TN1012/3892f08bb0641bcb09d4

 

動作としては、コンソール画面から入力した俳句をString.map関数で各文字(char型)をずらしていき、暗号文を表示します。但し、句の区切り文字として、半角スペースとカンマはそのままにしています。

実行結果

 

松尾芭蕉さんの「初桜折しも今日はよき日なり」をシーザー暗号化すると、「删桟抛ず・・・ゅ・・・」

「ずゅ」とか、どう読めと・・・w

※「初」(文字コード:0x521D)を3文字分ずらした文字は「删」(文字コード:0x5220)であることが分かりました。

 

こちらに、paiza.IOで作成したプログラムのブログパーツを埋め込みましたので、実際に実行したい方は試してみましょう。

入力欄に俳句(カンマ区切り)を入力して実行ボタンをクリックすると、暗号化した文字列が出力されます。

 

色々な俳句をシーザー暗号化したら、面白い文字列が出てくるかも。

それでは、See you next!

 

更新履歴

  • 2015/03/12:実行結果の俳句にミスがありましたので、正しい俳句に修正しました。
  • 2015/05/20:paiza.IOのブログパーツ機能を使って、プログラムを記事に埋め込みました。

 

この記事をシェアする
Chronoir.netのRSSフィードを購読する

About : ニア(Nia)

紅茶とコーヒーが好きな湘南生まれのプログラマー/ITエンジニアです。主にC#/C++/PHPを使ってプログラミングをしています。趣味は写真撮影と音ゲーです。時々イラストを描いています。プログラミングを勉強している方々と仲良くなりたいです! 興味を持っている分野:UWP/Xamarin/Android Wear/WPF/Windows/Visual Studio/WordPress/KUSANAGI/nginx

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*