unity3d中加密保存本地存档

unity中提供了PlayerPrefs来存储和读取本地的存档,根据unity的文档显示,很容易就能找到这些信息存储的位置

而且是明文的,很容易就看懂了 也可以修改,如何避免这种情况了,不如就加密一下吧,打字太累 直接上代码,需要的朋友拿走吧,当然加密的Key自己设定好了

using System;using System.IO;using System.Security.Cryptography;using System.Text;using UnityEngine;public class CryptoPrefs{sKEY = “ZTdkNTNmNDE2NTM3MWM0NDFhNTEzNzU1”;sIV = “4rZymEMfa/PpeJ89qY4gyA==”;(string key, int val){PlayerPrefs.SetString(CryptoPrefs.GetHash(key), CryptoPrefs.Encrypt(val.ToString()));}(string key, int defaultValue = 0){string @string = CryptoPrefs.GetString(key, defaultValue.ToString());int result = defaultValue;int.TryParse(@string, out result);return result;}(string key, float val){PlayerPrefs.SetString(CryptoPrefs.GetHash(key), CryptoPrefs.Encrypt(val.ToString()));}(string key, float defaultValue = 0f){string @string = CryptoPrefs.GetString(key, defaultValue.ToString());float result = defaultValue;float.TryParse(@string, out result);return result;}(string key, string val){PlayerPrefs.SetString(CryptoPrefs.GetHash(key), CryptoPrefs.Encrypt(val));}(string key, string defaultValue = “”){string text = defaultValue;string @string = PlayerPrefs.GetString(CryptoPrefs.GetHash(key), defaultValue.ToString());if (!text.Equals(@string)){text = CryptoPrefs.Decrypt(@string);}return text;}(string key){string hash = CryptoPrefs.GetHash(key);return PlayerPrefs.HasKey(hash);}(string key){string hash = CryptoPrefs.GetHash(key);PlayerPrefs.DeleteKey(hash);}(){PlayerPrefs.DeleteAll();}(){PlayerPrefs.Save();}(string encString){RijndaelManaged rijndaelManaged = new RijndaelManaged{Padding = PaddingMode.Zeros,Mode = CipherMode.CBC,KeySize = 128,BlockSize = 128};byte[] bytes = Encoding.UTF8.GetBytes(CryptoPrefs.sKEY);byte[] rgbIV = Convert.FromBase64String(CryptoPrefs.sIV);ICryptoTransform transform = rijndaelManaged.CreateDecryptor(bytes, rgbIV);byte[] array = Convert.FromBase64String(encString);byte[] array2 = new byte[array.Length];MemoryStream stream = new MemoryStream(array);CryptoStream cryptoStream = new CryptoStream(stream, transform, CryptoStreamMode.Read);cryptoStream.Read(array2, 0, array2.Length);return Encoding.UTF8.GetString(array2).TrimEnd(new char[1]);}(string rawString){RijndaelManaged rijndaelManaged = new RijndaelManaged{Padding = PaddingMode.Zeros,Mode = CipherMode.CBC,KeySize = 128,BlockSize = 128};byte[] bytes = Encoding.UTF8.GetBytes(CryptoPrefs.sKEY);byte[] rgbIV = Convert.FromBase64String(CryptoPrefs.sIV);ICryptoTransform transform = rijndaelManaged.CreateEncryptor(bytes, rgbIV);MemoryStream memoryStream = new MemoryStream();CryptoStream cryptoStream = new CryptoStream(memoryStream, transform, CryptoStreamMode.Write);byte[] bytes2 = Encoding.UTF8.GetBytes(rawString);cryptoStream.Write(bytes2, 0, bytes2.Length);cryptoStream.FlushFinalBlock();byte[] inArray = memoryStream.ToArray();return Convert.ToBase64String(inArray);}(string key){MD5 mD = new MD5CryptoServiceProvider();byte[] array = mD.ComputeHash(Encoding.UTF8.GetBytes(key));StringBuilder stringBuilder = new StringBuilder();for (int i = 0; i < array.Length; i++){stringBuilder.Append(array[i].ToString(“x2”));}return stringBuilder.ToString();}}

,一个人行走,若是寂寞了,寻一座霓虹灯迷离闪烁,

unity3d中加密保存本地存档

相关文章:

你感兴趣的文章:

标签云: