首頁 > 後端開發 > C++ > 如何使用RijndaelManed在C#中實現AES加密?

如何使用RijndaelManed在C#中實現AES加密?

Barbara Streisand
發布: 2025-01-28 20:36:11
原創
814 人瀏覽過

How to Implement AES Encryption in C# Using RijndaelManaged?

在C#中使用RijndaelManaged實現AES加密

高級加密標準 (AES) 是一種對稱分組密碼,用於保護敏感數據。在C#中實現AES有多種方法。

使用內置加密提供程序

最直接的方法是使用內置的加密提供程序RijndaelManaged。它提供了一種簡單的加密和解密方法。有關詳細信息,請參閱以下鏈接:

https://www.php.cn/link/90949b6cfd26574a426edea70f6f3485

自定義代碼示例

以下代碼片段演示了RijndaelManaged的使用:

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

namespace RijndaelManagedExample
{
    class RijndaelExample
    {
        static void Main(string[] args)
        {
            try
            {
                string original = "这是一些需要加密的数据!";

                using (var myRijndael = new RijndaelManaged())
                {
                    myRijndael.GenerateKey();
                    myRijndael.GenerateIV();
                    byte[] encrypted = EncryptStringToBytes(original, myRijndael.Key, myRijndael.IV);
                    string roundtrip = DecryptStringFromBytes(encrypted, myRijndael.Key, myRijndael.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)
        {
            using (var rijAlg = new RijndaelManaged())
            {
                rijAlg.Key = Key;
                rijAlg.IV = IV;
                using (var encryptor = rijAlg.CreateEncryptor(rijAlg.Key, rijAlg.IV))
                using (var msEncrypt = new MemoryStream())
                using (var csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
                using (var swEncrypt = new StreamWriter(csEncrypt))
                {
                    swEncrypt.Write(plainText);
                    return msEncrypt.ToArray();
                }
            }
        }

        static string DecryptStringFromBytes(byte[] cipherText, byte[] Key, byte[] IV)
        {
            using (var rijAlg = new RijndaelManaged())
            {
                rijAlg.Key = Key;
                rijAlg.IV = IV;
                using (var decryptor = rijAlg.CreateDecryptor(rijAlg.Key, rijAlg.IV))
                using (var msDecrypt = new MemoryStream(cipherText))
                using (var csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
                using (var srDecrypt = new StreamReader(csDecrypt))
                {
                    return srDecrypt.ReadToEnd();
                }
            }
        }
    }
}</code>
登入後複製

這段代碼展示瞭如何使用RijndaelManaged類在C#中進行AES加密和解密。 它包含了錯誤處理,並使用了更簡潔的using語句塊來管理資源。 請注意,實際應用中需要考慮密鑰管理和更安全的密鑰生成方法。

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

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