测试代码
var publicKey = @"xxxxxx";//公钥
string randomKey = AESEncrypt.randomStr(16);
var EncryptKey = RSAHelper.Encript(randomKey, publicKey);
Debug.Log("randomKey: "+ randomKey);
Debug.Log("EncryptKey: " + EncryptKey);
EncryptData encryptData = new EncryptData();
encryptData.KeyData = "11111112";
encryptData.Machine = "10000005";
var encryptStr = JsonConvert.SerializeObject(encryptData);
string iv = "eAFmBHVilJgOTql1";
string encodeData = AESEncrypt.EnCode(encryptStr, randomKey, iv);
Debug.Log("加密后:" + encodeData);
string decodeData = AESEncrypt.DeCode(encodeData, randomKey, iv);
Debug.Log("解密后:" + decodeData);
public class AESEncrypt
{
public static string randomStr(int len)
{
string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnoprstuvwxyz1234567890";
var maxPos = chars.Length;
string pwd = "";
for (int i = 0; i < len; i++)
{
char c = chars[UnityEngine.Random.Range(0, chars.Length)];
pwd += c;
}
return pwd;
}
/// <summary>
/// 加密数据
/// </summary>
/// <param name="data">明文数据</param>
/// <param name="key">密钥</param>
/// <param name="iv">偏移</param>
/// <returns></returns>
public static string EnCode(string data, string key, string iv)
{
try
{
byte[] keyArray = Encoding.UTF8.GetBytes(key);
byte[] ivArray = Encoding.UTF8.GetBytes(iv);
byte[] toEncryptArray = Encoding.UTF8.GetBytes(data);
RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyArray;
rDel.IV = ivArray;
rDel.Mode = CipherMode.CBC;
rDel.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = rDel.CreateEncryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}
catch (Exception e)
{
return null;
}
}
/// <summary>
/// 解密数据
/// </summary>
/// <param name="data">加密内容</param>
/// <param name="key">密钥</param>
/// <param name="iv">偏移</param>
/// <returns></returns>
public static string DeCode(string data, string key, string iv)
{
try
{
byte[] keyArray = Encoding.UTF8.GetBytes(key);
byte[] ivArray = Encoding.UTF8.GetBytes(iv);
byte[] toEncryptArray = Convert.FromBase64String(data);
RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyArray;
rDel.IV = ivArray;
rDel.Mode = CipherMode.CBC;
rDel.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = rDel.CreateDecryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return Encoding.UTF8.GetString(resultArray);
}
catch
{
return null;
}
}
}