今回は前回の講座で作成したセーブファイルを他人に見られないように暗号化する方法です。
追記:エクステンションのINI++に暗号化機能が搭載されていることが判りました。しかも、暗号化/復号化は自動で行ってくれるので、通常のINIと同じように使用するだけでOKでした。ただしINI++はインストーラーで配布されているために現状では日本語版に導入することが出来ません。日本語版に導入できるようになれば解説したいと思います。
サンプルプログラム
今回のサンプルです。前回のサンプルに追加する形で用意しました。
暗号化のエクステンションはいくつかあるようですが、今回は一番手軽に出来ると思われるCypher Objectを使用します。
なお、暗号化のセキュリテイレベルは専門家ではないので分かりません。あくまで、普通にファイルを開いても意味不明な文字列になっていて編集できないレベルと考えてください。
Cypher Objectの設定
Cypher Objectを挿入すると、まずはこのようなダイアログが現れます。
- Type in Key
このエディットボックスに暗号化/復号化に使用するキーを入力します。
下の"Generate Random Key"を押すと画像のような文字列を自動で生成してくれるので、こちらを使ったほうが良いでしょう。
※キーを変更してしまうと、以前のキーで暗号化したファイルは復号化できなくなりますので注意してください。
- Password Censor Editbox
チェックボックスを2回クリックしてグレーの状態にしておくと、設定ダイアログを閉じた時に変更を保存するかどうか確認が表示されるようになります。
ファイルの暗号化/復号化
続いてファイルの暗号化/復号化の方法です。
イベントエディタのCypher Objectのアクション"Encryption"内の
Encrypt が暗号化
Decrypt が復号化
となります。
では今回のサンプルに組み込んだイベントを見ていきましょう。
まずこのイベントですが、これは開発者用です。
このイベントを1回だけ実行してファイルの初期状態を暗号化された状態にしておきます。
暗号化されたセーブファイルにアクセスする手順は、
復号化→データ読み込みまたは書き込み→暗号化
となりますが、暗号化されていないファイルを復号化しても上手く働きませんので、まずは暗号化された状態にします。
このイベントは1度実行すれば必要ないので削除します。
続いて実際の保存と読み込みのイベントです。
先述のアクセス手順のように、復号化と暗号化のアクションでIniの保存や読み込みのアクションをサンドする形になっています。
"Encrypt file"、"Decrypt file"共にアクションを設定する際2回設定箇所が出てきます。
1回目が読み込むファイルの指定、2回目が出力するファイルの指定です。
出力ファイルの指定は、何も入力しなければ読み込んだファイルに上書きされます。
最後に、実行してファイルの保存/読み込みが正常に行えるか、ファイルを開いてみて暗号化されているかが確認されれば完了です。
この方法の欠点は、ロード時に2回/セーブ時に3回ファイルの変更があるということですね。
それに目を瞑れば結構スマートなんですが。