struct header{ ///バージョン情報(決まり文句・・・?) UINT version; ///ファイル数 ULONGLONG file_num; }; struct file{ ///ファイル名 BYTE filename[dkcdMAX_PATH]; ///ファイルサイズ ULONGLONG filesize; ///オフセット ULONGLONG offset; ///crc32left(CRC値) ULONG crc32lest; }; /* 簡易ファイル構造 header は 先頭に1個 file は header::file_num個ある。 データ部 は header::file_num個ある。 */
void create(){ void *ptr = malloc(1024(; }
-元データのメッセージダイジェスト ハッシュ値 -暗号化済みデータ
セーブ -ファイルに保存するすべてのデータをハッシュ関数に食わせる。 -ハッシュ値をいただく。 -ファイルに保存するすべてのデータを暗号化する。 -ハッシュ値を保存 -暗号化したデータを保存 ロード -ファイルに保存した暗号化したデータをメモリ上にロード -メモリ上にロードしたデータを複合化する -複合化したデータをハッシュ関数に食わせる -ハッシュ値をいただく。 -ファイルに保存してあるハッシュ値とさっき取得したハッシュ値をくらべる。 (ここでハッシュ値が違う場合は、セーブデータが改竄されていると判断できる。)
ファイル構造 -ハッシュ値 -プレーンなままのセーブデータ