ファイルを暗号化し、閲覧・解析を抑止する機能を追加します。
このスクリプトは、XP/VX のどちらでも使用できます。
XP では、使用前に必ず最新版の RTP または「RGSS***J.dll」を用意しておいてください。
(「ツクールWeb」から入手できます)
XP の場合は、最新版の「RGSS***J.dll」を「Game.exe」と同じフォルダに入れます。
入れなくても RTP が最新なら動きますが、相手側の RTP が古いと駄目なので、入れておくことをおすすめします。
次に、下のリンクからから『TCrypt.dll』をダウンロードしします。
>> ダウンロードページ
ダウンロードしたファイルを解凍し、『TCrypt.dll』を「Game.exe」と同じフォルダにコピーします。
あとはスクリプトを導入すれば、以下の機能が使えるようになります。
戻り値は付属の「API.txt」を参照してください。
呼び出しに失敗した場合は-1を返します。
(通常は気にする必要ありません)
keyやmodeが違うとファイルが壊れるのは仕様です。
modeはともかく、keyは忘れないようにしてください。
暗号化形式 | ||
mode | 名称 | 備考 |
TCrypt::MODE_MKERS | MKERS | AdvStlの「BCMKERC2」に相当。 (アルゴリズムの証明などは全く無い共通鍵暗号) BCMKERC2の3倍ほどの速度で処理可能。 |
TCrypt::MODE_MKES | MKES | AdvStlの「BCMKEC2」に相当。 MKERSから時間がかかる処理を除いたので、少しだけ速い。 |
ReadMe に記載した通り、使用により発生した損害に関しては一切責任を負いません。
以下に使用例を示します。
# バージョンを表示 p TCrypt.version / 100.0 # MKERS形式で、セーブファイル1を「ヌルポ!」というキーで暗号化 r = TCrypt.encrypt("Save1.rxdata", "Save1.rxdata", "ヌルポ!", TCrypt::MODE_MKERS) Graphics.update # おまじない # 0 以外の値が返るとエラーなので、メッセージを出して終了 if r != 0 p "エラー!!" exit end p "暗号化OK!!" # セーブファイル1を復号(元に戻す) r = TCrypt.decrypt("Save1.rxdata", "Save1.rxdata", "ヌルポ!", TCrypt::MODE_MKERS) if r != 0 p "エラー!!" else p "復号OK!!" end exit
↑の例だと暗号化したものをすぐ元に戻しているので、処理自体は意味がありません。
セーブファイルを解析されたくない場合は、データをセーブした直後に暗号化し、ロード直前に復号するといった方法を取ります。
(もちろん、ロード直後に再度暗号化しないと読まれてしまいます)
暗号化処理は多少時間がかかるので、MB単位の大きなファイルを暗号化するのは避けてください。
『AdvStl.dll』と比べてどのくらい速くなったかは、
AdvStl と TCrypt の速度比較をしてみた結果(PDF)
をご覧ください。
どのくらい速くなったかが大体分かれば良いので、テスト環境の詳細は書いてありません。
表に単位を書き忘れましたが、時間は「秒」単位です。
「相対速度」は、AdvStl の BCMKERC2 を基準にして、各形式がどれだけ速いかを単純に比較したものです。
バッファサイズも書き忘れましたが、すべて4096バイトです。
ファイルが 200KB 程度なので、これより増やしてもほとんど変わりません。
1024 や 2048 でも大して遅くなりません。
(さすがに 16 にすると遅くなりますが)