學習來源:https://blog.csdn.net/a451319296/article/details/109072863
為了方便本地json保存數(shù)據(jù),可以將加密寫在保存json數(shù)據(jù)之前,參考多方鏈接寫了一個簡易的字符串加密算法枷遂,運行結果:
代碼如下:
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
using UnityEngine;
public class Encryption : MonoBehaviour
{
void Start()
{
//加密測試
string teststr = "我今天真高興湿蛔!";
Debug.Log(StringToByteString(teststr));
//解密測試
string testbytestring = "PHShWiwLgN2BDIaUBY8devCFx3kSv+P6y34mCMV4MX8=";
Debug.Log(ByteStringToString(testbytestring));
}
//加密
public static string StringToByteString(string str)
{
return EncryptDES(Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(str)));
}
//解密
public static string ByteStringToString(string str)
{
return System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(DecryptDES(str)));
}
#region 字符串加密解密
private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
/// <summary>
/// DES加密字符串
/// </summary>
/// <param name="encryptString">待加密的字符串</param>
/// <param name="key">加密密鑰,要求為8位</param>
/// <returns>加密成功返回加密后的字符串,失敗返回源串</returns>
public static string EncryptDES(string encryptString, string key = "13717421")
{
try
{
byte[] rgbKey = Encoding.UTF8.GetBytes(key.Substring(0, 8));
byte[] rgbIV = Keys;
byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
cStream.Close();
return Convert.ToBase64String(mStream.ToArray());
}
catch
{
//Debug.LogError("StringEncrypt/EncryptDES()/ Encrypt error!");
return encryptString;
}
}
/// <summary>
/// DES解密字符串
/// </summary>
/// <param name="decryptString">待解密的字符串</param>
/// <param name="key">解密密鑰,要求為8位,和加密密鑰相同</param>
/// <returns>解密成功返回解密后的字符串抵知,失敗返源串</returns>
public static string DecryptDES(string decryptString, string key = "13717421")
{
try
{
byte[] rgbKey = Encoding.UTF8.GetBytes(key);
byte[] rgbIV = Keys;
byte[] inputByteArray = Convert.FromBase64String(decryptString);
DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
cStream.Close();
return Encoding.UTF8.GetString(mStream.ToArray());
}
catch
{
//Debug.LogError("StringEncrypt/DecryptDES()/ Decrypt error!");
return decryptString;
}
}
#endregion
}