またしても更新が遅れてしまいました。。。可能な限り、前回までの記事を読んでいただかなくても大丈夫なように書きましたが、内容の都合上、(2)の記事をもしご覧になっていない方は、そこだけ簡単に見返していただく必要があるかと思います。よろしくお願いします。
前回は、テキストボックス上の文字データを暗号化してファイルにセーブする処理を考えました。 今回は、逆にそのセーブされたファイルからデータを読み込み、暗号化されたデータを復元して、再びテキストボックス上に再現する処理を考えたいと思います。
読み込む処理のほうがむしろ簡単です。 暗号化されているといっても、要するに2バイトで構成されている各文字の上位バイトと下位バイトを入れ替えてセーブされているということと、各バイトデータが右または左に1ビットローテーション(=1ビットシフトして、はみだした1ビットをあいたところに差し込むこと)されているだけですから、読み込み時にも同じようなことをすればいいはずです。つまり、2バイトずつ読み込み、その2バイトの上位と下位を入れ替えて、それぞれを暗号化時と逆方向にローテーションして、文字として正しいものにしてから、テキストボックスに貼り付けていけばいいわけです。
流れとしては、以下のような形にしてみました。
上記4,5のローテーションには、前回の(2)の記事で作成した関数my_rotateを使用しています。7の貼り付け対象テキストボ��クスはtextBox1です。ただし、下記のプログラムの中では、一旦ファイルから読んで復元された文字はすべて変数testbufに入れて、ファイルを閉じた後でテキストボックスにコピーしています。それでは、以下にプログラムリストを掲示します。
textBox1.Text = testbuf;