ファイルを暗号化し、閲覧・解析を抑止する機能を追加します。
使用前に、必ず最新版の「RGSS***J.dll」またはRTPを用意しておいてください。
(【ツクールWeb】から入手できます。2005/10/16 時点での最新版は「RGSS102J.dll」)
このスクリプトは、現在サポートを行っておりません。
暗号化前の「ReadMe.txt」。
暗号化するとこんな風になります。
KGC_FileEncryption |
Stl.version |
『AdvStl.dll』のバージョンを、本来の値を100倍した整数値で返す。 (V0.01 -> 1, V1.23 -> 123) |
Stl.encrypt(infile, outfile, key, type) |
infileをkeyで暗号化してoutfileに出力する。 infileとoutfileは同じファイル名を指定しても良い。 keyは暗号化パターンを指定する任意の文字列(日本語・記号もOK…のはず)。 typeは暗号化形式(下表を参照)。 |
Stl.decrypt(infile, outfile, key) |
infileをkeyで復号してoutfileに出力する。 infileとoutfileは同じファイル名を指定しても良い。 keyは暗号化時と同じものを指定(違うとファイルが壊れる)。 |
暗号化APIの第一引数にウィンドウハンドルを指定すると、処理が終わるまで指定ウィンドウへの入力を禁止します。
…が、ちゃんとRGSS側で処理が終わるのを待っていてくれるので、0(NULL)を入れても特に問題は無さそうです。
(上記スクリプトは常に0。指定したい場合は書き換えてください)
keyが違うとファイルが壊れるのは仕様です。
(keyを内部に埋め込むと解析されやすくなるため)
そのため、keyは絶対忘れないようにしてください。
暗号化形式 | ||
type | 名称(略称) | 備考 |
0 | BCMKERC2 | DLL中最も強固(?)な形式。 暗号化には時間が掛かる。 |
1 | BCMKEC2 | [BCMKERC2]から、最も時間を要するステップを除いた形式。 強度はやや低いが、その分暗号化時間はかなり短い。 |
ReadMeに記載した通り、使用により発生した損害に関しては一切責任を負いません。
# バージョンを表示
p Stl.version / 100.0
# セーブファイル1を「試しに暗号化」というキーで暗号化
r = Stl.encrypt("Save1.rxdata", "Save1.rxdata", "試しに暗号化", 0)
# 0 以外の値が返るとエラーなので、メッセージを出して終了
if r != 0
p "エラー!!"
exit
end
# セーブファイル1を復号(元に戻す)
Stl.decrypt("Save1.rxdata", "Save1.rxdata", "試しに暗号化")
↑の例だと暗号化したものをすぐ元に戻しているので、処理自体は意味がありません。
セーブファイルを解析されたくない場合は、データをセーブした直後に暗号化し、ロード直前に復号するといった方法を取ります。
(もちろん、ロード直後に再度暗号化しないと読まれてしまいます)
暗号化処理は結構時間がかかるので、巨大なファイルを暗号化するといった操作はなるべく避けてください。
(処理時間が気になるときは、[BCMKEC2]を使えば高速処理できます)
参考までに、開発用プロジェクトのセーブファイル(サイズがでかい)の暗号化時間を、 『AdvStl.dll』と『Stl32.dll』の双方について載せておきます(秒単位)。
Target: Save1.rxdata [145,397 bytes] CPU: Intel Mobile Pentium 4 1.80GHz RAM: 512MB 266MHz etc. |
|||
Trial | AdvStl.dll [BCMKERC2] |
AdvStl.dll [BCMKEC2] |
Stl32.dll [BCMKERC] |
1 | 0.521 | 0.140 | 1.241 |
2 | 0.511 | 0.140 | 1.263 |
3 | 0.510 | 0.141 | 1.302 |
4 | 0.511 | 0.140 | 1.262 |
5 | 0.511 | 0.140 | 1.242 |
6 | 0.520 | 0.140 | 1.312 |
7 | 0.511 | 0.150 | 1.252 |
8 | 0.521 | 0.140 | 1.251 |
9 | 0.521 | 0.151 | 1.211 |
10 | 0.510 | 0.130 | 1.252 |
Average | 0.5147 | 0.1412 | 1.2588 |
所要時間 (比 Stl32) |
40.89% | 11.22% | ------ |
高速化率 | 2.4457 | 8.9150 | ------ |
すべてRGSSで計測しました。
(即席のベンチマークプログラムなので、あまり正確ではありません)
『AdvStl.dll(BCMKERC2)』は『Stl32.dll(BCMKERC)』と比較して140〜150%程度高速なようです。