C# AES CBC加密解密

复制代码
 1         public static string Decrypt(string combinedString, string keyString)
 2         {
 3             string plainText;
 4             byte[] combinedData = Convert.FromBase64String(combinedString);
 5             Aes aes = Aes.Create();
 6             aes.Key = Encoding.UTF8.GetBytes(keyString);
 7             byte[] iv = new byte[aes.BlockSize / 8];
 8             byte[] cipherText = new byte[combinedData.Length - iv.Length];
 9             Array.Copy(combinedData, iv, iv.Length);
10             Array.Copy(combinedData, iv.Length, cipherText, 0, cipherText.Length);
11             aes.IV = iv;
12             aes.Mode = CipherMode.CBC;
13             ICryptoTransform decipher = aes.CreateDecryptor(aes.Key, aes.IV);
14 
15             using (MemoryStream ms = new MemoryStream(cipherText))
16             {
17                 using (CryptoStream cs = new CryptoStream(ms, decipher, CryptoStreamMode.Read))
18                 {
19                     using (StreamReader sr = new StreamReader(cs))
20                     {
21                         plainText = sr.ReadToEnd();
22                     }
23                 }
24 
25                 return plainText;
26             }
27         }
28 
29         public static string Encrypt(string plainText, string keyString)
30         {
31             byte[] cipherData;
32             Aes aes = Aes.Create();
33             aes.Key = Encoding.UTF8.GetBytes(keyString);
34             aes.GenerateIV();
35             aes.Mode = CipherMode.CBC;
36             ICryptoTransform cipher = aes.CreateEncryptor(aes.Key, aes.IV);
37 
38             using (MemoryStream ms = new MemoryStream())
39             {
40                 using (CryptoStream cs = new CryptoStream(ms, cipher, CryptoStreamMode.Write))
41                 {
42                     using (StreamWriter sw = new StreamWriter(cs))
43                     {
44                         sw.Write(plainText);
45                     }
46                 }
47 
48                 cipherData = ms.ToArray();
49             }
50 
51             byte[] combinedData = new byte[aes.IV.Length + cipherData.Length];
52             Array.Copy(aes.IV, 0, combinedData, 0, aes.IV.Length);
53             Array.Copy(cipherData, 0, combinedData, aes.IV.Length, cipherData.Length);
54             return Convert.ToBase64String(combinedData);
55         }
复制代码

 

posted @   dongzhaosheng73  阅读(707)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
历史上的今天:
2021-05-26 .net 5.0 发布命令总结
点击右上角即可分享
微信分享提示