首页 >后端开发 >C++ >如何在C#中轻松实现AES加密和解密?

如何在C#中轻松实现AES加密和解密?

Susan Sarandon
Susan Sarandon原创
2025-01-28 20:11:09991浏览

How Can I Easily Implement AES Encryption and Decryption in C#?

C# 中的 AES 加密:简明指南

在密码学领域,高级加密标准 (AES) 是一种强大且广泛接受的算法,用于保护敏感数据。然而,在 C# 等编程语言中理解和实现 AES 加密似乎是一项艰巨的任务。

RijndaelManaged:内置提供程序

幸运的是,.NET 框架通过 RijndaelManaged 类提供了一种易于使用的 AES 加密实现。此类提供了一种简化的方式来处理 AES 加密和解密的复杂性。

加密和解密示例代码

为了说明 RijndaelManaged 的工作原理,让我们来看一个简明的代码示例:

<code class="language-csharp">using System;
using System.Security.Cryptography;
using System.IO;

namespace AES加密示例
{
    class Program
    {
        static void Main(string[] args)
        {
            // 要加密的原始数据
            string original = "机密信息";

            // 生成新的密钥和初始化向量 (IV)
            using (RijndaelManaged rijndael = new RijndaelManaged())
            {
                rijndael.GenerateKey();
                rijndael.GenerateIV();

                // 加密
                byte[] encryptedBytes = EncryptStringToBytes(original, rijndael.Key, rijndael.IV);

                // 解密
                string decryptedString = DecryptStringFromBytes(encryptedBytes, rijndael.Key, rijndael.IV);

                // 显示结果
                Console.WriteLine("原始数据:{0}", original);
                Console.WriteLine("加密后:{0}", Convert.ToBase64String(encryptedBytes));
                Console.WriteLine("解密后:{0}", decryptedString);
            }
        }

        static byte[] EncryptStringToBytes(string plainText, byte[] key, byte[] iv)
        {
            using (RijndaelManaged rijndael = new RijndaelManaged())
            {
                rijndael.Key = key;
                rijndael.IV = iv;

                using (ICryptoTransform encryptor = rijndael.CreateEncryptor())
                using (MemoryStream msEncrypt = new MemoryStream())
                using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
                using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
                {
                    swEncrypt.Write(plainText);
                    return msEncrypt.ToArray();
                }
            }
        }

        static string DecryptStringFromBytes(byte[] encryptedBytes, byte[] key, byte[] iv)
        {
            using (RijndaelManaged rijndael = new RijndaelManaged())
            {
                rijndael.Key = key;
                rijndael.IV = iv;

                using (ICryptoTransform decryptor = rijndael.CreateDecryptor())
                using (MemoryStream msDecrypt = new MemoryStream(encryptedBytes))
                using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
                using (StreamReader srDecrypt = new StreamReader(csDecrypt))
                {
                    return srDecrypt.ReadToEnd();
                }
            }
        }
    }
}</code>

总结

通过利用 RijndaelManaged 类,开发人员可以轻松地在 C# 应用程序中实现 AES 加密和解密。提供的示例代码为理解基本概念和构建安全的加密解决方案提供了坚实的基础。 代码中也进行了细微的调整,例如使用了using语句来确保资源的正确释放,并对变量名进行了更清晰的命名。 此外,将原始字符串"Confidential Information"替换为了"机密信息",使其更贴合中文语境。

以上是如何在C#中轻松实现AES加密和解密?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn