首页 >后端开发 >C++ >如何使用一个简单的示例在C#中实现AES 128位加密?

如何使用一个简单的示例在C#中实现AES 128位加密?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-28 20:21:09293浏览

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