117.info
人生若只如初见

c#文件操作如何实现文件加密

在C#中,可以使用多种方法对文件进行加密。这里,我将向您展示如何使用Aes类(高级加密标准)和FileStream类来实现文件加密和解密。

首先,确保已经安装了System.Security.Cryptography命名空间。

以下是一个简单的示例,展示了如何使用AES加密和解密文件:

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

class FileEncryption
{
    static void Main()
    {
        string inputFile = "input.txt";
        string outputFile = "output.enc";
        string key = "your-secret-key"; // 请确保密钥长度为16、24或32个字符
        string iv = "your-initial-vector"; // 请确保初始向量长度为16个字符

        EncryptFile(inputFile, outputFile, key, iv);
        DecryptFile(outputFile, "output.txt", key, iv);
    }

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

            using (FileStream fs = new FileStream(inputFile, FileMode.Open))
            {
                using (FileStream fos = new FileStream(outputFile, FileMode.Create))
                {
                    using (CryptoStream cs = new CryptoStream(fos, aes.CreateEncryptor(), CryptoStreamMode.Write))
                    {
                        cs.Write(fs.ToArray(), 0, fs.Length);
                    }
                }
            }
        }
    }

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

            using (FileStream fs = new FileStream(inputFile, FileMode.Open))
            {
                using (FileStream fos = new FileStream(outputFile, FileMode.Create))
                {
                    using (CryptoStream cs = new CryptoStream(fs, aes.CreateDecryptor(), CryptoStreamMode.Write))
                    {
                        cs.Write(fs.ToArray(), 0, fs.Length);
                    }
                }
            }
        }
    }
}

在这个示例中,我们首先创建了一个名为FileEncryption的类。在Main方法中,我们指定了输入文件、加密后的输出文件、密钥和初始向量。然后,我们调用EncryptFile方法对文件进行加密,接着调用DecryptFile方法对加密后的文件进行解密。

请注意,您需要将your-secret-keyyour-initial-vector替换为您自己的密钥和初始向量。密钥的长度应为16、24或32个字符,而初始向量的长度应为16个字符。在实际应用中,确保密钥和初始向量的安全性非常重要。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe03dAzsIAgFeBg.html

推荐文章

  • c++ csdn 能获取最新技术资讯吗

    是的,通过CSDN可以获取C++的最新技术资讯。CSDN专业的中文IT技术社区,提供了丰富的技术资源,包括C++相关的最新技术资讯、公开课、精品课、电子书等。以下是一...

  • c# gettype对代码维护有何影响

    GetType() 是 C# 中的一个方法,用于获取一个对象的类型信息。它对代码维护有以下几个方面的影响: 可读性:使用 GetType() 可以提高代码的可读性,因为它明确地...

  • c# gettype能获取哪些接口信息

    在C#中,GetType()方法用于获取一个对象的类型信息。当你对一个对象调用GetType()方法时,它会返回一个表示该对象类型的Type对象。通过这个Type对象,你可以获取...

  • c++ coroutine适用于高性能计算吗

    C++20 引入了协程(coroutines),它们是一种支持异步编程和协作式多任务的机制。协程在高性能计算(HPC)领域确实有一些潜在的应用,但它们是否适用取决于具体的...

  • linux的nc命令常见错误怎样进行快速修复

    在Linux中,nc(netcat)命令是一个非常强大的网络工具,用于读取和写入数据流 语法错误:确保你正确输入了命令的语法。例如,使用nc -l 监听端口,或使用nc 连接...

  • linux的nc命令参数怎样进行灵活配置

    nc(netcat)是一个强大的网络工具,用于读取和写入数据流 -l:监听模式。在指定端口上监听传入连接,而不是主动连接到其他主机。例如:nc -l 12345。 -p:指定监...

  • linux的nc命令如何进行数据解压缩

    在Linux中,nc(netcat)命令本身并不支持数据解压缩
    假设你有一个名为compressed_data.gz的压缩文件,你可以使用以下命令对其进行解压缩:
    gzip -d c...

  • linux的nc命令怎样进行流量控制

    nc(netcat)是一个强大的网络工具,用于读取和写入数据流
    以下是如何使用nc进行流量控制的方法: 使用-l选项监听端口:
    nc -l 这将在指定的端口上启动...