Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

c# aes加密

作者:疾风雨辰   发布日期:2026-01-24   浏览:61

using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;

public class AesEncryptionExample
{
    public static void Main()
    {
        string original = "Here is some data to encrypt!";
        string encrypted = EncryptString(original, "A16ByteKey!A16ByteKey!");
        string decrypted = DecryptString(encrypted, "A16ByteKey!A16ByteKey!");

        Console.WriteLine("Original: {0}", original);
        Console.WriteLine("Encrypted: {0}", encrypted);
        Console.WriteLine("Decrypted: {0}", decrypted);
    }

    public static string EncryptString(string plainText, string key)
    {
        using (Aes aesAlg = Aes.Create())
        {
            aesAlg.Key = Encoding.UTF8.GetBytes(key);
            aesAlg.IV = new byte[16]; // Initialization Vector

            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 Convert.ToBase64String(msEncrypt.ToArray());
                }
            }
        }
    }

    public static string DecryptString(string cipherText, string key)
    {
        using (Aes aesAlg = Aes.Create())
        {
            aesAlg.Key = Encoding.UTF8.GetBytes(key);
            aesAlg.IV = new byte[16]; // Initialization Vector

            ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);

            using (MemoryStream msDecrypt = new MemoryStream(Convert.FromBase64String(cipherText)))
            {
                using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
                {
                    using (StreamReader srDecrypt = new StreamReader(csDecrypt))
                    {
                        return srDecrypt.ReadToEnd();
                    }
                }
            }
        }
    }
}

解释说明:

  1. 加密和解密方法

    • EncryptString 方法用于将字符串加密为 AES 加密的 Base64 编码字符串。
    • DecryptString 方法用于将 AES 加密的 Base64 编码字符串解密回原始字符串。
  2. 初始化向量 (IV)

    • 在示例中,IV 被简单地设置为一个 16 字节的零数组。在实际应用中,IV 应该是随机生成的,并且与密文一起存储或传输。
  3. 密钥

    • 密钥必须是 16 字节(128 位),32 字节(256 位)等有效长度。在示例中,我们使用了一个 16 字节的密钥。
  4. 编码

    • 使用 UTF-8 编码将字符串转换为字节数组,以便进行加密和解密操作。
  5. 流处理

    • 使用 MemoryStreamCryptoStream 来处理加密和解密过程中的数据流。

这个示例展示了如何使用 C# 中的 Aes 类来实现基本的 AES 加密和解密功能。

上一篇:c# sealed

下一篇:c# try

大家都在看

c# 二进制

c# datatable group by

c# tcp client

c# type.gettype

c# sqlconnection

c# string.format 小数位数

.net和c#

c#获取系统时间

c#游戏开发

c#网络编程

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站