首页 > 后端开发 > 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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板