首頁 > 後端開發 > C++ > 如何在C#中輕鬆實現AES加密和解密?

如何在C#中輕鬆實現AES加密和解密?

Susan Sarandon
發布: 2025-01-28 20:11:09
原創
930 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板