C# 文件夹加密

可以加密文件内容,也可以对文件夹本身进行加密,本文对文件夹加密。

一、指定或生成一个密钥

1)指定的密钥

1  /// <summary>
2         /// 密钥,这个密码可以随便指定
3         /// </summary>
4         public static string sSecretKey = "?\a??64(?";

2) 也可以生成密钥

 1   /// <summary>
 2         /// 生成一个64位的密钥
 3         /// </summary>
 4         /// <returns>string</returns>
 5         public static string GenerateKey()
 6         {
 7             //创建对称算法的一个实例。自动生成的密钥和IV。
 8             DESCryptoServiceProvider desCrypto = (DESCryptoServiceProvider)DESCryptoServiceProvider.Create();
 9
10             // 使用自动生成的密钥进行加密。
11             return ASCIIEncoding.ASCII.GetString(desCrypto.Key);
12         }

二、调用ZeroMemory 函数从内存中删除Key

1  /// <summary>
2         /// 调用该函数从内存中删除的Key后使用
3         /// </summary>
4         [DllImport("KERNEL32.DLL", EntryPoint = "RtlZeroMemory")]
5         public static extern bool ZeroMemory(IntPtr Destination, int Length);

三、加密文件

 1   /// <summary>
 2         /// 加密文件
 3         /// </summary>
 4         /// <param name="sInputFilename">待加密的文件的完整路径</param>
 5         /// <param name="sOutputFilename">加密后的文件的完整路径</param>
 6         public static void EncryptFile(string sInputFilename, string sOutputFilename)
 7         {
 8             FileStream fsInput = new FileStream(sInputFilename, FileMode.Open, FileAccess.Read);
 9
10             FileStream fsEncrypted = new FileStream(sOutputFilename, FileMode.Create, FileAccess.Write);
11             DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
12             DES.Key = ASCIIEncoding.ASCII.GetBytes(sSecretKey);
13             DES.IV = ASCIIEncoding.ASCII.GetBytes(sSecretKey);
14             ICryptoTransform desencrypt = DES.CreateEncryptor();
15             CryptoStream cryptostream = new CryptoStream(fsEncrypted, desencrypt, CryptoStreamMode.Write);
16
17             byte[] bytearrayinput = new byte[fsInput.Length];
18             fsInput.Read(bytearrayinput, 0, bytearrayinput.Length);
19             cryptostream.Write(bytearrayinput, 0, bytearrayinput.Length);
20
21             cryptostream.Flush();
22             fsInput.Flush();
23             fsEncrypted.Flush();
24             cryptostream.Close();
25             fsInput.Close();
26             fsEncrypted.Close();
27         }

四、解密文件

 1 /// <summary>
 2         /// 解密文件
 3         /// </summary>
 4         /// <param name="sInputFilename">待解密的文件的完整路径</param>
 5         /// <param name="sOutputFilename">解密后的文件的完整路径</param>
 6         public static void DecryptFile(string sInputFilename, string sOutputFilename)
 7         {
 8             DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
 9             DES.Key = ASCIIEncoding.ASCII.GetBytes(sSecretKey);
10             DES.IV = ASCIIEncoding.ASCII.GetBytes(sSecretKey);
11
12             FileStream fsread = new FileStream(sInputFilename, FileMode.Open, FileAccess.Read);
13             ICryptoTransform desdecrypt = DES.CreateDecryptor();
14             CryptoStream cryptostreamDecr = new CryptoStream(fsread, desdecrypt, CryptoStreamMode.Read);
15             StreamWriter fsDecrypted = new StreamWriter(sOutputFilename);
16             fsDecrypted.Write(new StreamReader(cryptostreamDecr).ReadToEnd());
17             fsDecrypted.Flush();
18             fsDecrypted.Close();
19         }

五、完整代码

 1 /// <summary>
 2     /// 文件加密
 3     /// </summary>
 4     public class FileSecretHelper
 5     {
 6         /// <summary>
 7         /// 密钥,这个密码可以随便指定
 8         /// </summary>
 9         public static string sSecretKey = "?\a??64(?";
10
11         /// <summary>
12         /// 调用该函数从内存中删除的Key后使用
13         /// </summary>
14         [DllImport("KERNEL32.DLL", EntryPoint = "RtlZeroMemory")]
15         public static extern bool ZeroMemory(IntPtr Destination, int Length);
16
17
18         /// <summary>
19         /// 生成一个64位的密钥
20         /// </summary>
21         /// <returns>string</returns>
22         public static string GenerateKey()
23         {
24             //创建对称算法的一个实例。自动生成的密钥和IV。
25             DESCryptoServiceProvider desCrypto = (DESCryptoServiceProvider)DESCryptoServiceProvider.Create();
26
27             // 使用自动生成的密钥进行加密。
28             return ASCIIEncoding.ASCII.GetString(desCrypto.Key);
29         }
30
31         /// <summary>
32         /// 加密文件
33         /// </summary>
34         /// <param name="sInputFilename">待加密的文件的完整路径</param>
35         /// <param name="sOutputFilename">加密后的文件的完整路径</param>
36         public static void EncryptFile(string sInputFilename, string sOutputFilename)
37         {
38             FileStream fsInput = new FileStream(sInputFilename, FileMode.Open, FileAccess.Read);
39
40             FileStream fsEncrypted = new FileStream(sOutputFilename, FileMode.Create, FileAccess.Write);
41             DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
42             DES.Key = ASCIIEncoding.ASCII.GetBytes(sSecretKey);
43             DES.IV = ASCIIEncoding.ASCII.GetBytes(sSecretKey);
44             ICryptoTransform desencrypt = DES.CreateEncryptor();
45             CryptoStream cryptostream = new CryptoStream(fsEncrypted, desencrypt, CryptoStreamMode.Write);
46
47             byte[] bytearrayinput = new byte[fsInput.Length];
48             fsInput.Read(bytearrayinput, 0, bytearrayinput.Length);
49             cryptostream.Write(bytearrayinput, 0, bytearrayinput.Length);
50
51             cryptostream.Flush();
52             fsInput.Flush();
53             fsEncrypted.Flush();
54             cryptostream.Close();
55             fsInput.Close();
56             fsEncrypted.Close();
57         }
58
59         /// <summary>
60         /// 解密文件
61         /// </summary>
62         /// <param name="sInputFilename">待解密的文件的完整路径</param>
63         /// <param name="sOutputFilename">解密后的文件的完整路径</param>
64         public static void DecryptFile(string sInputFilename, string sOutputFilename)
65         {
66             DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
67             DES.Key = ASCIIEncoding.ASCII.GetBytes(sSecretKey);
68             DES.IV = ASCIIEncoding.ASCII.GetBytes(sSecretKey);
69
70             FileStream fsread = new FileStream(sInputFilename, FileMode.Open, FileAccess.Read);
71             ICryptoTransform desdecrypt = DES.CreateDecryptor();
72             CryptoStream cryptostreamDecr = new CryptoStream(fsread, desdecrypt, CryptoStreamMode.Read);
73             StreamWriter fsDecrypted = new StreamWriter(sOutputFilename);
74             fsDecrypted.Write(new StreamReader(cryptostreamDecr).ReadToEnd());
75             fsDecrypted.Flush();
76             fsDecrypted.Close();
77         }
78     }




 
				
时间: 2024-10-05 08:19:59

C# 文件夹加密的相关文章

十款免费文件夹加密软件推荐

到底文件加密软件哪个好?现在人们越来越注意隐私保护,而保护电脑中的一些重要文件,最好的方式就是加密.文件加密软件既要考虑到加密安全可靠,又要考虑到系统稳定,同时也要想到万一密码忘记该怎么挽回损失,再者就是方便易用.提到文件加密软件,很多电脑用户都非常熟悉.文件加密软件主要是用于给文件设置密码,从而保护文件信息安全的方法.目前,可供电脑用户选择使用的文件加密软件还是非常多的.那么,哪个文件加密软件更好用呢?今天,小编就给大家推荐10款好用的电脑文件加密软件,希望可以帮到大家! 10款免费文件夹加密

摆脱任何工具-简单代码让文件夹加密

电脑中或多或少的有很多敏感信息,尤其是大数据时代,信息一旦泄漏对我们造成的损失将会很大.有时候别人借用我们的电脑,有些信息不想让别人看到怎么办?有人会说有隐藏选项,但是,一旦开启显示隐藏文件,隐藏的文件夹又会暴露在视野里,那些用软件加密的软件又太复杂.下面的一段代码将让我们进行文件夹的加密. 加密手段实际上并不复杂,首先将加密文件夹改名成特殊名称:Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D},然后将其属性改为隐藏+系统,加入判断语句则是

手机文件夹加密软件

手机文件夹加密软件 虽然现在很多人热衷于苹果手机,但是安卓系统以其良好的使用性能,被众多的手机品牌所运用,我们所熟知的三星.小米都是安卓系统的,使用安卓系统的手机我们称之为安卓手机.也是就说安卓手机还是拥有最大的使用群体,总结了这些用户的一些常有的问题,发现有很多的人希望能够给安卓手机文件夹进行加密,因为现在手机不仅仅是打电话的工具,有的时候还充当着电脑的职责,接受文件是常有的事情,也有人把手机当U盘用,将经常使用的文件存储在手机里,所以希望能够给手机文件夹进行加密. 正好本人也有这方面的需求,

mac系统怎么给文件夹加密?mac文件夹加密教程

mac系统怎么给文件夹加密?目前来说,若想要对你的Mac OS下面的文件进行加密的话有三种方法可以可以做到,第一种方法,Mac自带磁盘工具:第二种方法,例如BatterZip此类Mac压缩解压工具打包加密.第三种方法,Mac加密软件,例如Espionage for mac,可以直接对文件夹和文件进行加密.整个来说,用系统自带的磁盘工具最麻烦,Mac加密软件最方便. 第一种方法:系统自带磁盘工具加密. 1.使用Spotlight找到“磁盘工具”并打开: 2.在左上角 [文件]下拉菜单——新建——文

硬盘文件夹加密软件

硬盘文件夹加密软件 硬盘文件夹加密要怎么办?重要文件如何设置密码?硬盘如何设置密码等等,这些问题困扰着越来越多的电脑用户,有时候为了防止自己的重要文件/文件夹被人随意查看和使用,就需要将其进行加密处理.但是由于文件夹加密软件此前一般都是针对企业用户设计的,无论在功能上还是操作设计上都不太适合普通用户使用,在这里小编推荐一款最新发布的护密文件夹加密软件,该软件采用强大加密技术专门用于帮助电脑用户轻松实现文件加密.文件夹加密.移动文件加密.硬盘加密.U盘加密等等需求. 而在众多的免费电脑文件夹加密软

怎么给文件夹加密

怎么给文件夹加密 现在的人非常看重个人隐私,但是我们又生活在互联网时代,互联网随时都可能让你需要保密的信息公布于天下,记得前不久的要桃花树事件,一些人摇曳桃花树让花瓣掉落,在我们这些乡下的孩子看来很正常,以前自家的桃花树经常会摇着玩,但是这次那几位就没有那么的幸运,被放上网然后配上文字,成为了全国人们的话柄.当然我并不是赞成那种做法,只是想着事件的一种可能性.相信那几位出名的人士非常的不愿意自己以这样的形态出现在全国人们面前.所以现在的人们不管是言行举止还是工作当中都需要规范.保护隐私就是自我保

win8文件夹加密

win8文件夹加密 我才刚刚用上win7系统win8就出来了,因为工作需要就重装了win8系统,新系统出现肯定有一些新的问题需要解决,比如如何对win8系统文件夹进行加密才能确保系统文件的安全.其实已经有很好的解决办法了.这里小编介绍自己使用的方法,就是借助第三方的软件对其进行加密,该软件是护密文件夹加密软件,为了让大家了解的更多,小编组织了一些语言,希望对大家有所帮助. 直接网上下载护密文件夹加密软件,可以百度软件名称,就能够找到这个软件的免费下载链接进行下载安装就可以了.最好建立一个桌面快捷

怎样给电脑文件夹加密

怎样给电脑文件夹加密 自己的电脑里面有不少重要的文件,但是闺蜜电脑报废了要用电脑,这个时候不借电脑显得太不仗义了,但是自己里有些东西又不想被别人看到.这几份文件涉及到个人的隐私.相信这个尴尬的境地不少人遇到过.这个时候就想要是这些文件能够又隐身的功能就好了,文件的本身当然不会有隐身的功能了,但是借助第三方的软件就能够让文件有隐身的效果,这个时候小编就不得不告诉你这个软件是护密文件夹加密软件了,它有四种加密的方式,其中就包括隐藏加密. 护密文件夹加密软件因为采用的是最先进的加密技术,经过加密后的文

电脑文件夹加密免费软件

电脑文件夹加密免费软件 电脑现在不管是生活还是工作都是必不可少的,但是对于怎样给文件夹加密,绝大部分的人都不是很清楚的.要知道电脑本身的系统是没有给文件夹加密的功能,如果是通过其他的办公软件来加密的话是非常的不方便的.在电脑中的文件夹加密来说不得不做好安全保护的工作.而选择一款简单.高效使用便利的文件加密软件是很多白领的最迫切的需要.小编在这里给大家介绍护密文件夹加密软件,希望能够对大家有所帮助,下面是软件的具体操作步骤. 免费下载护密文件夹加密软件到桌面上安装运行,即可出现一个快捷方式: 1.