Part112:Encryption(解密) of saved data save file(P147)
1:效果和操作
效果:将数据文件的文字加密,防止篡改数据信息
2:代码改变
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;
}
[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();
LoadGame();
}
3:效果图
加密前:

加密后:
