using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Security.Cryptography; using System.Text; using UnityEngine; public static class EncryptionTool { public static byte[] MakeMD5(byte[] kb) { MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();//用来给密钥进行散列 byte[] keyhash = md5.ComputeHash(kb);//给密钥散列 md5.Clear();//释放资源 return keyhash; } #region 加密 /// /// 使用给定密钥加密字符串 /// /// 明文 /// 密钥 /// 加密后的密文 public static string Encrypt(this string original, string key) { byte[] buff = Encoding.Unicode.GetBytes(original);//把明文转化成二进制数组 byte[] kb = Encoding.Unicode.GetBytes(key);//把密钥转化成二进制数组 TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();//用TripleDES算法来加密的类 des.Key = MakeMD5(kb);//设置TripleDES算法的密钥 des.Mode = CipherMode.ECB;//设置算法的模式 byte[] enByte = des.CreateEncryptor().TransformFinalBlock(buff, 0, buff.Length); return Convert.ToBase64String(enByte); } /// /// 使用默认密钥加密 /// /// 明文 /// 加密后的密文 public static string Encrypt(this string original) { return Encrypt(original, "ldq"); } #endregion #region 解密 /// /// 使用指定的密钥解密 /// /// 加密过后的密码 /// 密钥(密钥的明文) /// 密码对应的明文 public static string Decrypt(this string encrypted, string key) { byte[] buff = Convert.FromBase64String(encrypted); byte[] kb = Encoding.Unicode.GetBytes(key); TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider(); des.Key = MakeMD5(kb); des.Mode = CipherMode.ECB; byte[] original = des.CreateDecryptor().TransformFinalBlock(buff, 0, buff.Length);//获取明文的byte数组 return Encoding.Unicode.GetString(original);//转化成字符串,并返回 } public static string Decrypt(this string encrypted) { return Decrypt(encrypted, "ldq"); } #endregion }