ファイル暗号化2

FileEncryption2

blank目次

Outline

blank概要

Summary

ファイルを暗号化し、閲覧・解析を抑止する機能を追加します。

このスクリプトは、XP/VX のどちらでも使用できます。

XP では、使用前に必ず最新版の RTP または「RGSS***J.dll」を用意しておいてください。
(「ツクールWeb」から入手できます)

↑目次

blank更新履歴

History
2006/11/27
新規作成。

↑目次

blankスクリプト

Script

↑目次

blank使用法

Usage

XP の場合は、最新版の「RGSS***J.dll」を「Game.exe」と同じフォルダに入れます。
入れなくても RTP が最新なら動きますが、相手側の RTP が古いと駄目なので、入れておくことをおすすめします。

次に、下のリンクからから『TCrypt.dll』をダウンロードしします。
>> ダウンロードページ
ダウンロードしたファイルを解凍し、『TCrypt.dll』を「Game.exe」と同じフォルダにコピーします。

あとはスクリプトを導入すれば、以下の機能が使えるようになります。

TCrypt.version
『TCrypt.dll』のバージョンを、本来の値を100倍した整数値で返す。
(V0.01 -> 1, V1.23 -> 123)
TCrypt.encrypt(infile, outfile, key, mode[, bufsize])
infilekeyで暗号化してoutfile に出力する。
infileoutfileは同じファイル名を指定しても良い。
keyは暗号化パターンを指定する任意の文字列。(長すぎるとダメ。RPGXPでは、たぶん85文字まで)
modeは暗号化形式。
bufsizeは処理バッファサイズ。(省略時: 4096Byte)
TCrypt.decrypt(infile, outfile, key, mode[, bufsize])
infilekeyで復号してoutfileに出力する。
infileoutfileは同じファイル名を指定しても良い。
keyは暗号化時と同じものを指定。(違うとファイルが壊れる)
modeは暗号化時と同じものを指定。(違うとファイルが壊れる)
bufsizeは処理バッファサイズ。(省略時: 4096Byte)

戻り値は付属の「API.txt」を参照してください。
呼び出しに失敗した場合は-1を返します。
(通常は気にする必要ありません)

keymodeが違うとファイルが壊れるのは仕様です。
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 にすると遅くなりますが)

↑目次