MST

星途 面试题库

面试题:C# 使用 MemoryStream 实现大文件部分内容加密传输

假设要通过网络传输一个大文件,但只需要对文件中间某一段连续的数据进行加密传输。请用 C# 结合 MemoryStream 实现从大文件中提取指定字节范围的数据,对其进行简单加密(例如异或加密),并最终通过模拟网络流(可使用 MemoryStream 模拟接收端)传输和解密这部分数据的代码示例。
24.4万 热度难度
编程语言C#

知识考点

AI 面试

面试题答案

一键面试
using System;
using System.IO;

class Program
{
    // 简单的异或加密函数
    static void XorEncryptDecrypt(byte[] data, byte key)
    {
        for (int i = 0; i < data.Length; i++)
        {
            data[i] ^= key;
        }
    }

    static void Main()
    {
        // 假设大文件路径
        string filePath = "largeFile.txt";
        // 假设要提取的起始字节位置和长度
        long startByte = 100;
        int length = 200;

        // 从大文件中提取指定字节范围的数据
        byte[] extractedData;
        using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
        {
            fileStream.Seek(startByte, SeekOrigin.Begin);
            extractedData = new byte[length];
            fileStream.Read(extractedData, 0, length);
        }

        // 加密提取的数据
        byte encryptionKey = 0x42;
        XorEncryptDecrypt(extractedData, encryptionKey);

        // 使用MemoryStream模拟网络流传输数据
        using (MemoryStream networkStream = new MemoryStream())
        {
            networkStream.Write(extractedData, 0, extractedData.Length);
            networkStream.Position = 0;

            // 模拟接收端,从网络流中读取数据
            byte[] receivedData = new byte[length];
            networkStream.Read(receivedData, 0, length);

            // 解密接收到的数据
            XorEncryptDecrypt(receivedData, encryptionKey);

            // 输出解密后的数据(这里简单打印前10个字节)
            Console.WriteLine("Decrypted Data:");
            for (int i = 0; i < Math.Min(10, receivedData.Length); i++)
            {
                Console.Write(receivedData[i].ToString("X2") + " ");
            }
            Console.WriteLine();
        }
    }
}