移動式のブログ

ガジェット、アニメ、プログラミング、考えたことその他色々・・・特にこれといったテーマはないカオスなブログです。

c言語 シーザー暗号による暗号化プログラム

 前回公開したプログラムを改良してみた。

idoushiki.hatenablog.com

↑前回公開したプログラムには、たくさん問題点があり、実用性がおもちゃ程度だったが、今回はもう少しましなプログラムが出来上がったので、そのうち公開しようと思う。


 前回のプログラムの問題点

1、約900KBまでの画像しか暗号化できない。それ以上のサイズの画像だとオーバーフローして画像が正常に暗号化できない。画像の一部が無くなる。

2、ファイル名をわざわざ拡張子(.jpgや.pngなど)込みで入力しなければいけない。

3、画像を1個ずつしか暗号化できない。

4、画像の名前が長すぎると暗号化できない。

5、画像の名前に空欄が含まれていると暗号化できない 例:「abc 1.jpg」

6、パスワードは4桁以内の半角数字のみ。パスワードが9999より大きな数字になると、正常に暗号化できない。画質の高い画像等、画像によっては9999以内でさえ暗号化できない(データが大きくなってオーバーフローする)。

これらの問題点のうち1,2,3の問題点が解決して、多少便利なものが出来上がった。



 1と2の問題点に関して
前回のプログラムは、900kbまでの画像ファイルしか暗号化できなかったが、改良後のプログラムは、暗号化したいファイルの拡張子を設定すればそのファイルが暗号化できるので、画像以外のファイルも暗号化できる。
 暗号化できるファイルのサイズの上限も、3MBぐらいまでなら正常に暗号化できることを確認しているが、もっと大きなサイズのファイルも問題なく暗号化できると思う。

 3の問題点に関して
 改良後のプログラムは、指定したフォルダー内の指定した数のファイルを一斉に暗号化できる。
 


改良後のプログラムは暗号化の手順が特殊なので、画像付きで説明したいと思う。

 f:id:idoushiki:20160522152257p:plain
f:id:idoushiki:20160522152331p:plain

まず、暗号化したい画像をすべて選択する。
f:id:idoushiki:20160522152409p:plainf:id:idoushiki:20160522152416p:plain

全て選択したら、名前の変更をして、半角のアルファベット、または半角数字のみで名前を変更して、全てのファイルが
ooo (1).png ooo (2),png ...というような、一スペース開けて、かっこの番号がつく状態にする。
この状態にできたら、プログラムを起動する。
f:id:idoushiki:20160522152809p:plain
まず初めに、キーボードの3をおして、設定をする。
f:id:idoushiki:20160522152949p:plain
3設定を押したら、暗号化したいファイルの拡張子、暗号化したいファイルの数、ファイルのある場所を入力する。
設定は、このプログラムを始めて起動したときだけ必要。
一度設定したら自動的に設定用のtxtファイル(config.txt)がプログラム本体の入っているフォルダ内に生成されるので、txtファイルを直接書き換えて設定できる。

f:id:idoushiki:20160522153541p:plain

 設定が完了したら、1の暗号化を選択して、暗号化したいファイル名を入力する。
 今回のファイル名は a (1).png~a (12),png の合計12のファイルがあるが、空白より前の名前だけ(今回は「a」)と入力する。

 「a」と入力して、パスワードを入力。暗号化が完了したら、「a暗号化完了12」と表示される。
f:id:idoushiki:20160522154316p:plain

暗号化が完了したあと、a (1).png~a (12),pngのファイルのあるフォルダーを見てみると、すべてtxtファイルになっているので暗号化成功。

f:id:idoushiki:20160522154500p:plain

 復号化したい時は「2復号化」を選択して、復号化したいファイル名を暗号化した時と同じように入力して、復号化ができる。