using System;
using System.Security.Cryptography;
using System.Text;
using System.Web.Script.Serialization;
namespace AesEncryptionExample
{
public static class AesEncryption
{
public static string EncryptJson(object data, byte[] key, byte[] iv)
{
// 将对象转换为JSON字符串
JavaScriptSerializer serializer = new JavaScriptSerializer();
string json = serializer.Serialize(data);
using (Aes aesAlg = Aes.Create())
{
aesAlg.Key = key;
aesAlg.IV = iv;
ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
byte[] encryptedData;
using (MemoryStream msEncrypt = new MemoryStream())
{
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
{
swEncrypt.Write(json);
}
encryptedData = msEncrypt.ToArray();
}
}
// 将加密后的数据转换为Base64字符串
string encryptedJson = Convert.ToBase64String(encryptedData);
return encryptedJson;
}
}
public static T DecryptJson<T>(string encryptedJson, byte[] key, byte[] iv)
{
byte[] encryptedData = Convert.FromBase64String(encryptedJson);
using (Aes aesAlg = Aes.Create())
{
aesAlg.Key = key;
aesAlg.IV = iv;
ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
string decryptedJson;
using (MemoryStream msDecrypt = new MemoryStream(encryptedData))
{
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
{
using (StreamReader srDecrypt = new StreamReader(csDecrypt))
{
decryptedJson = srDecrypt.ReadToEnd();
}
}
}
// 将解密后的JSON字符串转换为对象
JavaScriptSerializer serializer = new JavaScriptSerializer();
T decryptedData = serializer.Deserialize<T>(decryptedJson);
return decryptedData;
}
}
}
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class Program
{
public static void Main(string[] args)
{
byte[] key = Encoding.UTF8.GetBytes("ThisIsASecretKey");
byte[] iv = Encoding.UTF8.GetBytes("ThisIsAnIV123456");
Person person = new Person
{
Name = "Alice",
Age = 25
};
string encryptedJson = AesEncryption.EncryptJson(person, key, iv);
Console.WriteLine("加密后的数据: " + encryptedJson);
Person decryptedPerson = AesEncryption.DecryptJson<Person>(encryptedJson, key, iv);
Console.WriteLine("解密后的数据: " + decryptedPerson.Name + ", " + decryptedPerson.Age);
}
}
}
C#实现AES加密和解密JSON数据的例子
最新推荐文章于 2025-01-28 06:45:00 发布