文字列をそのままテキストデータとして保存するのではなく、データを改変できないよう暗号化して保存し、読み込む際には複合して元に戻したい場合があります。
こちらの記事の「ASE暗号」を試してみてうまくいったのでメモっておきたいと思います。
基本的には、新規にクラスを作成して記事中で公開されているコードをそのままペースト(ただし public static void Main() のメイン関数は動作テスト用の記述なのでまるっと削除)すれば良いのですが、注意点がひとつあります。
EnCript(暗号化)するテキストに改行記号が含まれる場合、DeCript(複合)する際には以下の一行のせいで一行分しか読み込まれません。
plain = sr.ReadLine();
なので、以下のようにテキスト全てを読み込むように書き換えます。
plain = sr.ReadToEnd();
これで改行が含まれた文字列も全て読み込めるようになります。
あと、EncryptとDecript関数をメインとなるフォームから呼び出す場合に、以下の初期ベクトル(?)と共通鍵(?)が使用されるように書き換えが必要でしょうか。加えて、代入されているランダムな文字列を記事中のものとは変えた方が良い感じでしょうか。
private const string AES_IV = @"pf69DL6GrWFyZcMK"; private const string AES_Key = @"9Fix4L4HB4PKeKWY";
そして実装してみたら、こちらのようにうまくいきました!
今までステータス情報が左のような状態だったのが、暗号化で右のような状態に。 pic.twitter.com/othus1Ssee
— moko (@moko_03_25) December 19, 2018
以上です。