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

C# 加密文件、文件夹、解密文件、文件夹

作者:野牛程序员:2023-12-28 21:40:53C#阅读 2555

使用C#可以使用不同的加密算法和库来加密和解密文件或文件夹。以下是一个简单的例子,演示如何使用System.Security.Cryptography命名空间中的Aes类进行文件加密和解密。请注意,这只是一个基本的示例,实际应用中可能需要更多的安全性和错误处理。

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

class Program
{
    static void Main()
    {
        string inputFile = "example.txt";
        string encryptedFile = "encrypted.dat";
        string decryptedFile = "decrypted.txt";

        string key = "abcdefghijklmnopqrstuvwx"; // 16字节的密钥,实际使用时应更安全
        string iv = "1234567890123456"; // 16字节的初始化向量(IV),实际使用时应更安全

        EncryptFile(inputFile, encryptedFile, key, iv);
        DecryptFile(encryptedFile, decryptedFile, key, iv);

        Console.WriteLine("加密和解密完成。");
    }

    static void EncryptFile(string inputFile, string outputFile, string key, string iv)
    {
        using (Aes aesAlg = Aes.Create())
        {
            aesAlg.Key = System.Text.Encoding.UTF8.GetBytes(key);
            aesAlg.IV = System.Text.Encoding.UTF8.GetBytes(iv);

            using (FileStream inputFileStream = new FileStream(inputFile, FileMode.Open))
            using (FileStream outputFileStream = new FileStream(outputFile, FileMode.Create))
            using (CryptoStream cryptoStream = new CryptoStream(outputFileStream, aesAlg.CreateEncryptor(), CryptoStreamMode.Write))
            {
                inputFileStream.CopyTo(cryptoStream);
            }
        }
    }

    static void DecryptFile(string inputFile, string outputFile, string key, string iv)
    {
        using (Aes aesAlg = Aes.Create())
        {
            aesAlg.Key = System.Text.Encoding.UTF8.GetBytes(key);
            aesAlg.IV = System.Text.Encoding.UTF8.GetBytes(iv);

            using (FileStream inputFileStream = new FileStream(inputFile, FileMode.Open))
            using (FileStream outputFileStream = new FileStream(outputFile, FileMode.Create))
            using (CryptoStream cryptoStream = new CryptoStream(outputFileStream, aesAlg.CreateDecryptor(), CryptoStreamMode.Write))
            {
                inputFileStream.CopyTo(cryptoStream);
            }
        }
    }
}

请注意,这只是一个简单的例子。在实际应用中,可能需要处理更多的异常情况,确保密钥的安全存储,以及选择更强大的加密算法和最佳实践。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击