開発環境
- Unity 2022.3.45f1
- Save Game Free 2.4.0
Save Game FreeはオープンソースのUnityアセットで、無料版と有料版がある。なお現在新しく有料版を買うなら、同作者後継のBayat – Save Systemがおすすめらしい。
無料版は使える暗号化のアルゴリズムが一種類のみなので、しっかり暗号化したい場合は有料版、もしくは後継のBayat – Save Systemを推奨する。
今回は無料でできる範囲での暗号化したセーブデータの保存、読み込みを紹介する。
パスワード無しの場合
//暗号化を有効化
SaveGame.Encode = true;
//保存(今回の型はstring)
SaveGame.Save<string>("SaveDataName", "保存したい値");//SaveDataNameは読み込み時に必要なkey
//読み込み
SaveGame.Load<string>("SaveDataName");//値が返ってくる
Code language: C# (cs)
パスワード無しの場合一応暗号化はされるが、方式がBase64固定でただのエンコードのみなので改ざん対策にかなり脆弱になるので注意。
パスワード有りの場合
//暗号化を有効化
SaveGame.Encode = true;
//保存
SaveGame.Save<string>("SaveDataName", "保存したい値", "password");//passwordには復号時に必要なパスワードを指定
//読み込み
SaveGame.Load<string>("SaveDataName", true, "password");
Code language: JavaScript (javascript)
パスワードをコード内に平分のまま保存するのもまずいので、外部DBなりローカルなら別の暗号化(PBKDF2など)なりと組み合わせるのを推奨。とはいえそもそも無料版だとパスワードを安全に保存しても、値がBase64のみ?で暗号化されてたら意味がない。。
どうしても無料でやりたいなら、ハッシュとか組み合わせて独自の暗号化クラスを作って呼び出したほうが安定してるかも。
コメント