Example #1
0
        public void EncryptTest()
        {
            Xor xor = new Xor(0xab);

            Assert.AreEqual <byte>(xor.Encrypt(new byte[] { 0xba, 0xda, 0xff })[0], 0x11);
            Assert.AreEqual <byte>(xor.Encrypt(new byte[] { 0xba, 0xda, 0xff })[1], 0x71);
            Assert.AreEqual <byte>(xor.Encrypt(new byte[] { 0xba, 0xda, 0xff })[2], 0x54);
        }
Example #2
0
        public void Unigraph_XorTest()
        {
            Xor xor = new Xor(Utility.EnglishAlphabet());// KeyedEnglishAlphabet("KRYPTOS"));

            cipher    = "";
            clear     = "";
            generated = "";
            for (int i = 0; i < 25; i++)
            {
                xor.Key   = xor.GenerateRandomString(11);
                generated = xor.GenerateRandomString();

                cipher = xor.Encrypt(generated);
                clear  = xor.Decrypt(cipher);

                Assert.AreEqual(generated, clear);
            }
        }
Example #3
0
    public static void SaveGameData(bool isAutoSave = false)
    {
        var gameData = Rm_RPGHandler.Instance;

        if (!isAutoSave)
        {
            Debug.Log("[RPGAIO] Saving Game Data ...");
        }

        var saveFile = JsonConvert.SerializeObject(gameData, Formatting.Indented, new JsonSerializerSettings
        {
            TypeNameHandling       = TypeNameHandling.Objects,
            TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple,
            ObjectCreationHandling = ObjectCreationHandling.Replace
        });

        string saveFileEncoded;

        if (GameDataSaveLoadManager.Instance.EncryptFiles)
        {
            var crypto = new Xor();

            saveFileEncoded = crypto.Encrypt(saveFile, GameDataSaveLoadManager.Instance.EncryptKey);
        }
        else
        {
            saveFileEncoded = saveFile;
        }

        Directory.CreateDirectory(SavePath);

        var oldFileName = SavePath + GameDataSaveLoadManager.Instance.GameDataFileName;

        if (Rm_RPGHandler.Instance.Preferences.EnableBackupOnSave && !isAutoSave && File.Exists(oldFileName))
        {
            if (Rm_RPGHandler.Instance.Preferences.OneBackupPerDay)
            {
                var newFileName = SavePath + GameDataSaveLoadManager.Instance.GameDataFileName + "-" + DateTime.Now.ToString("ddMMMyyyy") + ".bak";
                if (File.Exists(newFileName))
                {
                    File.Delete(newFileName);
                }
                File.Move(oldFileName, newFileName);
            }
            else
            {
                var newFileName = SavePath + GameDataSaveLoadManager.Instance.GameDataFileName + "-" + DateTime.Now.ToString("ddMMMyyyy") + " at " + DateTime.Now.ToString("HH-mm-ss") + ".bak";

                if (File.Exists(newFileName))
                {
                    File.Delete(newFileName);
                }
                File.Move(oldFileName, newFileName);
            }
        }
        else if (isAutoSave)
        {
            var newFileName = SavePath + GameDataSaveLoadManager.Instance.GameDataFileName + ".autosave.bak";

            if (File.Exists(newFileName))
            {
                File.Delete(newFileName);
            }

            File.Move(oldFileName, newFileName);
        }

        using (var stringwriter = new StreamWriter(SavePath + GameDataSaveLoadManager.Instance.GameDataFileName, false))
        {
            stringwriter.Write(saveFileEncoded);
        }

        if (!isAutoSave)
        {
            Notify.Save("Saved Game Data");
        }

        //Update game config defaults, in case we added button etc
        GameSettingsSaveLoadManager.Instance.NewData();
        AssetDatabase.Refresh();
    }