9章.画面の暗号化 |
|
1999.10.9 |
|
|
☆悩む画像の配布方法 LGPおよび他の開発環境を含め、ゲームを開発する際、画像の配布方法を悩んだことがある人は少なくはないでしょう。私が悩んだ事例では、画像をグラフィックツールなどで参照できないようにしたいというものでした。 ゲームのシナリオが進行するのにあわせてご褒美の意味で画像を表示させたいのに、ゲームを進めないのにグラフィックツールで画像を見られてしまうのは、少し寂しいです。LGPを含めゲームに使用する画像は、BMPやJPEGなどの一般的に知られたフォーマットで配布するため、そのままでは、見てくれと言っているようなものではないでしょうか。 では、オリジナルのフォーマットを作ればよいのでしょうが、そんなに簡単な作業でないことは明白です。さらに、DirectXのようなライブラリを使用した場合、そのライブラリが使用できるフォーマットの画像しか使用できません。 ☆悩みに対する回答 では、画像を見せたくない場合はどうしたら良いのでしょうか? 実はLGPにはその要求を満たしてくれる一つの回答があります。それが画像の暗号機能です。LGPで扱う一般的な画像はBMPファイルですが、画像を暗号化して配布する事で簡単には内容を参照できないようにします。といってもグラフィックエディタで画像を開くことがはできます。しかし、暗号化した状態では参照してもノイズ状にしか見えません。 ![]() 表1.暗号化前の画像 ![]() 表2.暗号化後の画像 暗号化したBMPファイルの作り方ですが、特別なツールは使用せず、LGPで暗号化を行います。 LGPには、通常のBMPファイルを読み込み/書き込み出来るのに加え、暗号化したBMPファイルを読み込み/書き込みができます。BMPファイルの暗号化の方法は次のようになります。 CH = G@SETUP( 640 , 480 , 16 , 1 )
BM = G@CHRLOAD( "TEST.BMP" )
G@CHRSAVE( BM , "TEST_KEKKA.BMP" , "PASSWORD" )
G@CHRLOAD関数で通常の方法で読み込み、G@CHRSAVE関数でパスワードを指定して書き込めば、暗号化は完了です。ようは、G@CHRSAVE関数は、2番目の引数を省略すれば通寿の書き込みを行い、2番目の引数にパスワード(文字列)を指定すれば、暗号化して書き込むのです。 実際のゲーム中に暗号化した画像を読み込み画面に表示するには、 CH = G@SETUP( 640 , 480 , 16 , 1 )
BM = G@CHRLOAD( "TEST.BMP" )
G@CHRSAVE( BM , "TEST_KEKKA.BMP" , "PASSWORD" )
のように書きます。特に説明を加えなくても、分かると思いますが、G@CHRSAVE関数で暗号化する際に指定したパスワードをG@CHRLOAD関数で指定すれば画像は複合化されるのです。 ☆暗号化の強度 暗号化には「DES」という暗号アルゴリズムを使用しています。Webブラウザに関連して「SSL」というセキュリティプロトコル(暗号通信の為の通信規格)の名前を聞いたことはあるでしょうか?Webページの入力フィールドから、パスワードやクレジットカードの情報を入力させる際に情報を暗号化することでデータの漏れを防ぎたい場合に使用されます。(ブラウザの左下の鍵マークが付いているときはSSLによる通信中です)この暗号にDESが使用されています。 Web上の個人情報の暗号化に現役で使用されている程の強度を持つ暗号なので、ゲーム画像の暗号化であれば十分すぎるものでしょう。 ☆暗号化の注意 G@CHRSAVE関数の使い方ですが、G@SETUP関数で設定したカラーモードで出力される事を覚えておいて下さい。 |