首頁 >後端開發 >C++ >如何使用一個簡單的示例在C#中實現AES 128位加密?

如何使用一個簡單的示例在C#中實現AES 128位加密?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-28 20:21:09260瀏覽

How can I implement AES 128-bit encryption in C# using a simple example?

C# 中的 AES 加密

高級加密標準 (AES) 是一個強大且可靠的加密算法。它使用 128 位密鑰大小,提供卓越的安全性。在尋找 C# 中 AES 加密的清晰示例時,您可能會遇到以下常見問題:

問題:

我很難找到一個關於如何在 C# 中使用 AES 128 位加密的簡單示例。有人可以提供一個代碼示例嗎?

答案:

.NET 框架包含一個內置的 AES 實現,可以通過 RijndaelManaged 類訪問。此資源以及簡潔的代碼示例可在以下 Microsoft 文檔文章中找到:

[https://www.php.cn/link/194309a52da9de185b531cfc697cfca8 link is likely outdated and may not work. A more modern approach should be used.)

為方便起見,以下是一個代碼片段:

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

public class AesEncryptionExample
{
    public static void Main(string[] args)
    {
        try
        {
            string original = "这是一个需要加密的数据!";

            // 使用更现代的 AesManaged 类
            using (AesManaged aes = new AesManaged())
            {
                aes.KeySize = 128; // 指定128位密钥
                aes.GenerateKey();
                aes.GenerateIV();

                byte[] encrypted = EncryptStringToBytes(original, aes.Key, aes.IV);
                string roundtrip = DecryptStringFromBytes(encrypted, aes.Key, aes.IV);

                Console.WriteLine("原文:{0}", original);
                Console.WriteLine("解密后:{0}", roundtrip);
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("错误:{0}", e.Message);
        }
    }

    static byte[] EncryptStringToBytes(string plainText, byte[] Key, byte[] IV)
    {
        // 使用更现代的 AesManaged 类进行加密
        using (AesManaged aesAlg = new AesManaged())
        {
            aesAlg.Key = Key;
            aesAlg.IV = IV;

            ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
            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[] cipherText, byte[] Key, byte[] IV)
    {
        // 使用更现代的 AesManaged 类进行解密
        using (AesManaged aesAlg = new AesManaged())
        {
            aesAlg.Key = Key;
            aesAlg.IV = IV;

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

此代碼使用更現代的 AesManaged 類,並提供更清晰的錯誤處理。 請記住,在實際應用中,您應該使用更安全的密鑰管理方法,而不是像此示例中那樣直接在代碼中生成密鑰。

以上是如何使用一個簡單的示例在C#中實現AES 128位加密?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn