当前位置:首页 > C# > 正文

C#实现AES对称加密解密文件(新手友好版AES加密解密完整教程)

在现代软件开发中,AES对称加密是一种广泛使用的数据安全技术。尤其在处理敏感文件时,使用C#文件加密可以有效防止未授权访问。本文将手把手教你如何使用C#语言实现AES解密教程中涵盖的核心功能——对任意文件进行加密与解密。

C#实现AES对称加密解密文件(新手友好版AES加密解密完整教程) AES对称加密 C#文件加密 AES解密教程 C# AES加密 第1张

什么是AES对称加密?

AES(Advanced Encryption Standard,高级加密标准)是一种对称加密算法,意味着加密和解密使用相同的密钥。它具有高安全性、高效率的特点,被广泛应用于金融、通信、文件保护等领域。

准备工作

你需要:

  • Visual Studio(或任何支持C#的IDE)
  • .NET Framework 4.5 或 .NET Core / .NET 5+ 环境
  • 一个待加密的测试文件(如 test.txt)

核心代码实现

我们将创建一个简单的工具类 AesFileEncryptor,包含两个主要方法:EncryptFileDecryptFile

using System;using System.IO;using System.Security.Cryptography;using System.Text;public class AesFileEncryptor{    /// <summary>    /// 使用AES加密文件    /// </summary>    /// <param name="inputFilePath">原始文件路径</param>    /// <param name="outputFilePath">加密后文件路径</param>    /// <param name="password">密码(用于生成密钥和IV)</param>    public static void EncryptFile(string inputFilePath, string outputFilePath, string password)    {        using (Aes aes = Aes.Create())        {            aes.KeySize = 256;            aes.BlockSize = 128;            aes.Mode = CipherMode.CBC;            aes.Padding = PaddingMode.PKCS7;            // 从密码派生密钥和IV            Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(password, new byte[16], 1000);            aes.Key = pdb.GetBytes(32); // 256位密钥            aes.IV = pdb.GetBytes(16);  // 128位IV            using (FileStream fsInput = new FileStream(inputFilePath, FileMode.Open, FileAccess.Read))            using (FileStream fsOutput = new FileStream(outputFilePath, FileMode.Create, FileAccess.Write))            using (CryptoStream cs = new CryptoStream(fsOutput, aes.CreateEncryptor(), CryptoStreamMode.Write))            {                fsInput.CopyTo(cs);            }        }    }    /// <summary>    /// 使用AES解密文件    /// </summary>    /// <param name="inputFilePath">加密文件路径</param>    /// <param name="outputFilePath">解密后文件路径</param>    /// <param name="password">密码(必须与加密时一致)</param>    public static void DecryptFile(string inputFilePath, string outputFilePath, string password)    {        using (Aes aes = Aes.Create())        {            aes.KeySize = 256;            aes.BlockSize = 128;            aes.Mode = CipherMode.CBC;            aes.Padding = PaddingMode.PKCS7;            Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(password, new byte[16], 1000);            aes.Key = pdb.GetBytes(32);            aes.IV = pdb.GetBytes(16);            using (FileStream fsInput = new FileStream(inputFilePath, FileMode.Open, FileAccess.Read))            using (FileStream fsOutput = new FileStream(outputFilePath, FileMode.Create, FileAccess.Write))            using (CryptoStream cs = new CryptoStream(fsOutput, aes.CreateDecryptor(), CryptoStreamMode.Write))            {                fsInput.CopyTo(cs);            }        }    }}  

使用示例

下面是如何在主程序中调用上述方法:

class Program{    static void Main()    {        string originalFile = "test.txt";        string encryptedFile = "test_encrypted.aes";        string decryptedFile = "test_decrypted.txt";        string password = "MySecurePassword123!";        // 加密文件        AesFileEncryptor.EncryptFile(originalFile, encryptedFile, password);        Console.WriteLine("文件已加密!");        // 解密文件        AesFileEncryptor.DecryptFile(encryptedFile, decryptedFile, password);        Console.WriteLine("文件已解密!");    }}  

注意事项

  • 密码安全:请使用强密码(包含大小写字母、数字、特殊字符),避免使用简单字符串。
  • 密钥管理:本例使用密码派生密钥(PBKDF2),适合个人应用;企业级应用建议使用密钥管理系统(KMS)。
  • 异常处理:实际项目中应添加 try-catch 块处理文件不存在、权限不足等异常。
  • 兼容性:此代码适用于 Windows、Linux、macOS(通过 .NET Core / .NET 5+)。

总结

通过本篇C# AES加密教程,你已经掌握了如何使用AES算法对文件进行安全的加密与解密。无论你是开发桌面应用、Web服务还是移动后端,这项技能都能帮助你更好地保护用户数据。记住:安全无小事,合理使用AES对称加密是构建可信系统的重要一环。

希望这篇教程对你有帮助!欢迎分享给需要的朋友。