文件File加密解密
1 /// <summary> 2 /// 文件操作帮助类,提供文件加密、解密 3 /// </summary> 4 public class FileHelper 5 { 6 7 //public const string fileEncrityKey = "dbe06967-669d-41dbe06967-669d-41"; 8 public const string fileEncrityKey = "ihlih*0037JOHT*)(PIJY*(()JI^)IO%"; 9 10 11 /// <summary> 12 /// 加密 13 /// </summary> 14 /// <param name="docPath">要加密的文件路径</param> 15 /// <param name="destPath">加密后的文件路径</param> 16 /// <param name="strKey">秘钥</param> 17 public static void Encrypt(string docPath, string destPath, string strKey) 18 { 19 //分组加密算法 20 using (var fs = new FileStream(docPath, FileMode.Open)) 21 { 22 var buffer = new byte[fs.Length]; 23 fs.Read(buffer, 0, buffer.Length);//得到需要加密的字节数组 24 //设置密钥,密钥向量,两个一样,都是16个byte 25 var rDel = new RijndaelManaged(); 26 var key = Encoding.UTF8.GetBytes(strKey); 27 rDel.Key = key; 28 rDel.Mode = CipherMode.ECB; 29 rDel.Padding = PaddingMode.PKCS7; 30 ICryptoTransform cTransform = rDel.CreateEncryptor(); 31 byte[] cipherBytes = cTransform.TransformFinalBlock(buffer, 0, buffer.Length); 32 var fsEncrypt = new FileStream(destPath, FileMode.Create, FileAccess.Write); 33 fsEncrypt.Write(cipherBytes, 0, cipherBytes.Length); 34 } 35 } 36 37 //解密,fileIn:解密的文件路径,fileOut:解密后的文件存放路径,strKey:秘钥 38 public static void Decrypt(string fileIn, string fileOut, string strKey) 39 { 40 var fsIn = new FileStream(fileIn, FileMode.Open, FileAccess.Read); 41 var fsOut = new FileStream(fileOut, FileMode.OpenOrCreate, FileAccess.Write); 42 var rDel = new RijndaelManaged(); 43 var key = Encoding.UTF8.GetBytes(strKey); 44 rDel.Key = key; 45 rDel.Mode = CipherMode.ECB; 46 rDel.Padding = PaddingMode.PKCS7; 47 var cs = new CryptoStream(fsOut, rDel.CreateDecryptor(), CryptoStreamMode.Write); 48 var bufferLen = 4096; 49 var buffer = new byte[bufferLen]; 50 int bytesRead; 51 do 52 { 53 bytesRead = fsIn.Read(buffer, 0, bufferLen); 54 cs.Write(buffer, 0, bytesRead); 55 } while (bytesRead != 0); 56 cs.Close(); 57 fsIn.Close(); 58 fsIn.Dispose(); 59 fsOut.Dispose(); 60 } 61 }
初心商城:初心商城
作者:韩迎龙(Kencery) MVC/.NET群:159227188如果您认为这篇文章还不错或者有所收获,您可以通过右边的“打赏”功能 打赏一杯咖啡,本页版权归作者和博客园所有,欢迎转载,但未经作者同意必须保留此段声明, 且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构