tetr4lab / CryptoPlayerPrefs

Simple encryption of unity save data

Home Page:https://qiita.com/tetr4lab/items/e57bb6486dfeb96b93f0

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CryptoPlayerPrefs / 簡易なセーブデータの暗号化

Encryption of unity save data
tags: Unity C#

前提

  • unity 2018.4.1f1、2018.4.32f1
  • System.Security.Cryptography BlockSize 128bit, KeySize 256bit, Mode CBC, Padding PKCS7

できること

  • 標準のPlayerPrefsを置き換える形で、セーブデータの暗号化ができます。
  • PlayerPrefsを継承するので、クラス名を付け替えるだけで置き換えが完了します。
  • クラスオブジェクトを扱うことが可能です。(GetObject<T> ()SetObject<T> ())

導入

  • 最小限必要なアセットは、Crypto.csCryptoPlayerPrefs.csです。
  • Sample.csは使用例です。シーンSampleSceneで挙動を確認できます。

簡単な使い方

  • PlayerPrefsの代わりにCryptoPlayerPrefsを使用します。
    • クラス名が異なる以外は同じ使い方です。
  • 鍵は自動生成することも、任意に定めることもできます。
    • Sample.csには、切り替えスイッチがあります。
  • 鍵は、何処かに保存しておく必要があります。例えば…
    • ソース中でハードコーディングする
    • 難読化してPlayerPrefsでセーブする
    • Fixした画像データの一部を使用する
  • GetObject<T> ()SetObject<T> ()を使う対象には、[Serializable]アトリビュートの指定が必要です。
    • 具体的には、Sample.csを参照してください。
    • このセーブデータは、.NETのバージョンに依存しており、異なるバージョン間では互換性が保証されません。

開発途中はセーブデータの内容を見たい

  • CryptoPlayerPrefs.cs冒頭の#define CRYPTOをコメントアウトすると、暗号化を行いません。
    • 素のPlayerPrefs+オブジェクト拡張の挙動になります。

【参考】#define 触るの面倒なんだけど…

About

Simple encryption of unity save data

https://qiita.com/tetr4lab/items/e57bb6486dfeb96b93f0


Languages

Language:C# 100.0%