C#实现简单的异或加密,方便处理
将本地的mp4和ts文件加密为“dj”文件,无法播放。解密则是将“dj”文件解密为mp4或ts文件。
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; namespace ConsoleApp2 { class Program { static void Main(string[] args) { Console.Write("请输入操作方式(1加密、0解密):"); var key = Console.ReadLine(); if (key == "1") { Encrypt(); } else { Dencrypt(); } Console.ReadKey(); } /// <summary> /// 加密处理 /// </summary> static void Encrypt() { string path = AppDomain.CurrentDomain.BaseDirectory; string[] extends = new string[] { "*.ts", "*.mp4" }; foreach (var ex in extends) { foreach (var file in Directory.GetFiles(path, ex)) { Encrypt(file, file + ".dj"); Console.WriteLine($"[{file}]加密成功"); File.Delete(file); } } Console.WriteLine("所有文件加密成功"); } static void Dencrypt() { string path = AppDomain.CurrentDomain.BaseDirectory; foreach (var file in Directory.GetFiles(path, "*.dj")) { Encrypt(file, file.Replace(".dj", "")); Console.WriteLine($"[{file}]解密成功"); File.Delete(file); } Console.WriteLine("所有文件解密成功"); } static void Encrypt(string sourceFileName, string targetFileName) { using (var writeStream = File.OpenWrite(targetFileName)) { //int start = 0; int len = 0; byte[] readBytes = new byte[1024]; using (var readStream = File.OpenRead(sourceFileName)) { var totalLenth = readStream.Length; while ((len = readStream.Read(readBytes, 0, readBytes.Length)) > 0) { writeStream.Write(Encry(readBytes), 0, len); Console.WriteLine($"[{sourceFileName}]读取中[{readStream.Position}/{totalLenth}]"); } } } } static byte[] Encry(byte[] bs) { for (int i = 0; i < bs.Length; i++) { bs[i] = (byte)(bs[i] ^ 0x12); } return bs; } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
2020-12-18 修改Nuget包默认存放路径,避免增加C盘的负担