Part112:Encryption(解密) of saved data save file

Part112:Encryption(解密) of saved data save file(P147)

1:效果和操作

效果:将数据文件的文字加密,防止篡改数据信息

2:代码改变

//FileDataHandler脚本修改
 		private bool encryptData = false;//是否加密判断
    private string codeWord = "fullmetalalchemist";//加密密码
		public FileDataHandler(string _dataDirPath, string _dataFilePath, bool _encryptData)//构造函数拿到需要保存的位置和文件名称
    {
        dataDirPath = _dataDirPath;
        dataFileName = _dataFilePath;
        encryptData = _encryptData;

    }
		public void Save(GameData _data)
    {
           string fullPath = Path.Combine(dataDirPath, dataFileName);
		try
        {
            Directory.CreateDirectory(Path.GetDirectoryName(fullPath));
            string dataToStore = JsonUtility.ToJson(_data, true);
            if (encryptData)
                dataToStore = EncryptDecrypt(dataToStore);
             using (FileStream stream = new FileStream(fullPath, FileMode.Create)){
               ....
             }

    		}
        }
		public GameData Load()//同上
    {
      try
         {
        ...
          if (encryptData)
                {
                    dataToLoad = EncryptDecrypt(dataToLoad);
                }
        ...
      		}
      	catch (Exception e){
          ...
        }
      retrun loadData;
    }

 		private string EncryptDecrypt(string _data)//数据加密函数
    {
        string modifiedData = "";//返回的加密文件
        for (int i = 0; i < _data.Length; i++)
        {
            modifiedData += (char)(_data[i] ^ codeWord[i % codeWord.Length]);
        }

        return modifiedData;
    }
//SaveManager脚本修改
    [SerializeField] private bool encryptData;
		private void DeleteSaveData()
    {
        dataHandler = new FileDataHandler(Application.persistentDataPath, fileName,encryptData);
        dataHandler.Delete();
    }
		private void Start()
    {
        dataHandler = new FileDataHandler(Application.persistentDataPath, fileName,encryptData);
        saveManagers = FindAllSaveManagers();
        // Debug.Log(Application.persistentDataPath);//获取保存路径
        LoadGame();
    }	

3:效果图

加密前:

在这里插入图片描述

加密后:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值