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

c# aes 加密

作者:颓废的爱情   发布日期:2025-12-28   浏览:34

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

public class AesEncryption
{
    // AES加密方法
    public static string Encrypt(string plainText, string key)
    {
        byte[] encrypted;
        using (Aes aesAlg = Aes.Create())
        {
            aesAlg.Key = Encoding.UTF8.GetBytes(key.Substring(0, 32)); // 设置密钥
            aesAlg.IV = Encoding.UTF8.GetBytes(key.Substring(0, 16));  // 设置初始化向量

            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);
                    }
                    encrypted = msEncrypt.ToArray();
                }
            }
        }

        return Convert.ToBase64String(encrypted); // 返回加密后的字符串
    }

    // AES解密方法
    public static string Decrypt(string cipherText, string key)
    {
        string plaintext = null;
        using (Aes aesAlg = Aes.Create())
        {
            aesAlg.Key = Encoding.UTF8.GetBytes(key.Substring(0, 32));
            aesAlg.IV = Encoding.UTF8.GetBytes(key.Substring(0, 16));

            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))
                    {
                        plaintext = srDecrypt.ReadToEnd();
                    }
                }
            }
        }

        return plaintext;
    }
}

// 示例用法
class Program
{
    static void Main()
    {
        string key = "your_secret_key_123"; // 密钥长度必须为32个字符
        string original = "Here is some data to encrypt!";

        string encrypted = AesEncryption.Encrypt(original, key);
        Console.WriteLine("Encrypted: " + encrypted);

        string decrypted = AesEncryption.Decrypt(encrypted, key);
        Console.WriteLine("Decrypted: " + decrypted);
    }
}

解释说明:

  1. 加密方法 (Encrypt):

    • 使用AES算法进行加密。
    • KeyIV(初始化向量)是从提供的密钥中提取的前32个字符和前16个字符。
    • 加密后的数据以Base64编码格式返回。
  2. 解密方法 (Decrypt):

    • 使用相同的AES算法和密钥进行解密。
    • 输入是Base64编码的加密字符串,输出是原始的明文。
  3. 示例用法:

    • 创建一个密钥,并对一段文本进行加密和解密操作。
    • 打印加密后的字符串和解密后的结果。

上一篇:c#去掉字符串第一个字符

下一篇:c# interlocked

大家都在看

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 中文站