作成しているゲームエンジンで使用するゲームデータファイルを暗号化する方法を開発しています。ゲームデータファイルは秘密鍵で暗号化され、ゲームエンジンにロードされると復号化されます。
秘密鍵は、エンジンにコンパイルされるように(constとして)エンジンに手動で設定されます。ただし、その秘訣は、コードを逆アセンブルしてリバースエンジニアリングするだけでは、平均的なJoe Bloggsが(簡単に)キーを見つけられないようにすることです。
struct Example {
u_int8_t random1;
u_int64_t segment31;
u_int8_t random2;
u_int8_t random3;
u_int64_t segment3;
u_int64_t segment14;
// Etc
};
私の考えは、ランダムに生成されたバイトと一緒に混乱しているセグメントにキーを格納することです。私の質問はこれです:
C ++マクロでランダムに数値を生成する方法はありますか?数値はコンパイル時にランダムに生成される必要があるため(または、ランダムな値がそれぞれユーザーが選択したランダムな値に設定される)、ランタイム関数は適切ではありません。
これを行うためのより良い方法があれば、私はどんな提案も受け入れますが、ゲームデータファイルを秘密鍵と公開鍵のペアで暗号化し、公開鍵を可能な限り秘密にしておくことを強く望んでいます。