using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptography; using System.Text; using UnityEngine; namespace libx { public static class CryptoHelper { /// /// 加密字符串 /// /// /// /// /// public static string EncryptStr(string value, string key) { try { Byte[] keyArray = System.Text.Encoding.UTF8.GetBytes(key); Byte[] toEncryptArray = System.Text.Encoding.UTF8.GetBytes(value); var rijndael = new System.Security.Cryptography.RijndaelManaged(); rijndael.Key = keyArray; rijndael.Mode = System.Security.Cryptography.CipherMode.ECB; rijndael.Padding = System.Security.Cryptography.PaddingMode.PKCS7; System.Security.Cryptography.ICryptoTransform cTransform = rijndael.CreateEncryptor(); Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); return Convert.ToBase64String(resultArray, 0, resultArray.Length); } catch (Exception ex) { Debug.LogError(ex); return null; } } /// /// 解密字符串 /// /// /// /// /// public static string DecryptStr(string value, string key) { try { Byte[] keyArray = System.Text.Encoding.UTF8.GetBytes(key); Byte[] toEncryptArray = Convert.FromBase64String(value); var rijndael = new System.Security.Cryptography.RijndaelManaged(); rijndael.Key = keyArray; rijndael.Mode = System.Security.Cryptography.CipherMode.ECB; rijndael.Padding = System.Security.Cryptography.PaddingMode.PKCS7; System.Security.Cryptography.ICryptoTransform cTransform = rijndael.CreateDecryptor(); Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); return System.Text.Encoding.UTF8.GetString(resultArray); } catch (Exception ex) { Debug.LogError(ex); return null; } } /// /// AES 算法加密(ECB模式) 将明文加密 /// /// 明文 /// 密钥 /// 加密后base64编码的密文 public static byte[] AesEncrypt(byte[] toEncryptArray, string Key) { try { byte[] keyArray = Encoding.UTF8.GetBytes(Key); RijndaelManaged rDel = new RijndaelManaged(); rDel.Key = keyArray; rDel.Mode = CipherMode.ECB; rDel.Padding = PaddingMode.PKCS7; ICryptoTransform cTransform = rDel.CreateEncryptor(); byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); return resultArray; } catch (Exception ex) { Debug.LogError(ex); return null; } } /// /// AES 算法解密(ECB模式) 将密文base64解码进行解密,返回明文 /// /// 密文 /// 密钥 /// 明文 public static byte[] AesDecrypt(byte[] toDecryptArray, string Key) { try { byte[] keyArray = Encoding.UTF8.GetBytes(Key); RijndaelManaged rDel = new RijndaelManaged(); rDel.Key = keyArray; rDel.Mode = CipherMode.ECB; rDel.Padding = PaddingMode.PKCS7; ICryptoTransform cTransform = rDel.CreateDecryptor(); byte[] resultArray = cTransform.TransformFinalBlock(toDecryptArray, 0, toDecryptArray.Length); return resultArray; } catch (Exception ex) { Debug.LogError(ex); return null; } } } }