public void CryptoFunctionsEncryptAndDecryptAsExpected() { _file = File.Open(Application.dataPath + _filePath, FileMode.Open); var encryptedResult = PersistantDataOperationFunctions.EncryptFileStream(_file, _key, _iV); var decryptedResult = PersistantDataOperationFunctions.DecryptFileStream(new MemoryStream(encryptedResult), _key, _iV); var stream = new MemoryStream(decryptedResult); var bf = new BinaryFormatter(); var actualFirst = (DataBlockA)bf.Deserialize(stream); Assert.AreEqual(_firstData.CurrentIntValue, actualFirst.CurrentIntValue); Assert.AreEqual(_firstData.CurrentStringValue, actualFirst.CurrentStringValue); var actualSecond = (DataBlockB)bf.Deserialize(stream); Assert.AreEqual(_secondData.SomeStringValue, actualSecond.SomeStringValue); _file.Close(); }
public static void WriteCurrentSave(string savePath, IPersistenceServiceInterface persistenceService) { using (var writeStream = new MemoryStream()) { var binaryFormatter = new BinaryFormatter(); binaryFormatter.Serialize(writeStream, SceneManager.GetActiveScene().path); SaveData(writeStream, persistenceService); var encryptedStream = new MemoryStream(PersistantDataOperationFunctions.EncryptFileStream(new MemoryStream(writeStream.ToArray()), GameDataStorageConstants.AESKey, GameDataStorageConstants.AESIV)); using (var fileStream = File.Open(Application.persistentDataPath + savePath, FileMode.OpenOrCreate)) { var bytesToCopy = encryptedStream.ToArray(); fileStream.Write(bytesToCopy, 0, bytesToCopy.Length); fileStream.Close(); } } }