测试代码
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;
}
}
}
c# AES+RSA 加密解密
最新推荐文章于 2024-07-18 08:59:04 发布
这段代码展示了如何使用RSA算法生成公钥和私钥,并结合AES算法进行数据加密和解密的过程。首先,通过RSA生成一个随机的AES密钥,然后使用AES对数据进行CBC模式的加密和解密操作。整个过程涉及到关键的加密库和方法,如RijndaelManaged,用于加密和解密的密钥和偏移量。
摘要由CSDN通过智能技术生成