c如何實(shí)現(xiàn)文件與文件夾加密分析_第1頁(yè)
c如何實(shí)現(xiàn)文件與文件夾加密分析_第2頁(yè)
c如何實(shí)現(xiàn)文件與文件夾加密分析_第3頁(yè)
c如何實(shí)現(xiàn)文件與文件夾加密分析_第4頁(yè)
c如何實(shí)現(xiàn)文件與文件夾加密分析_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、c#加密文件只可以對(duì)文件本身加密,卻不能對(duì)文件夾加密,經(jīng)查詢得知:是系統(tǒng)限制了,不知道真假,大家可在查詢,把結(jié)果告訴大家共享。其實(shí)系統(tǒng)已經(jīng)集成了對(duì)文件夾和硬盤的加密的功能。下面是對(duì)單個(gè)文件的加密代碼: 引用中主要是添加了兩個(gè):using System.Security.Cryptography;     using System.IO;源碼(帶有詳細(xì)的注釋):       using System;using System.Collections.Generic;using Syste

2、m.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Security.Cryptography;using System.IO;namespace xiaoxia    public partial class FileJiami : Form            public FileJi

3、ami()                    InitializeComponent();                private void FileJiami_Load(object sender, EventArgs e)   

4、0;                    private void button1_Click(object sender, EventArgs e)                    /文件瀏覽    

5、        if (this.openFileDialog1.ShowDialog() = DialogResult.OK)                            this.txtFileIn.Text = this.openFileDialog1.

6、FileName;                this.txtFileOut.Text = "填寫名稱和后綴"                            priva

7、te void button2_Click(object sender, EventArgs e)                    /文件加密            if (this.txtFileIn.Text = "")     

8、                       /輸入文件檢測(cè)                MessageBox.Show("請(qǐng)選擇加密文件!", "小俠提示您:", MessageBoxButton

9、s.OK, MessageBoxIcon.Information);                return;                        if (this.txtFileOut.Text = "&

10、quot;)                            /輸出文件檢測(cè)                MessageBox.Show("請(qǐng)輸入輸出文件名!",

11、 "小俠提示您:", MessageBoxButtons.OK, MessageBoxIcon.Information);                return;                      

12、0; if (this.txtMima1.Text.Length < 6 | this.txtMima2.Text != this.txtMima1.Text)                            /輸入密碼檢測(cè)        

13、0;       MessageBox.Show("請(qǐng)輸入正確密碼!", "小俠提示您:", MessageBoxButtons.OK, MessageBoxIcon.Information);                return;         &

14、#160;              /獲得被加密文件名            string myInFileName = this.txtFileIn.Text;                 &

15、#160;     /獲得加密文件名            string myOutFileName = this.txtFileOut.Text;            /設(shè)定初始變量            byte myDES

16、IV=0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,;            byte myDESKey = ;            /根據(jù)密碼設(shè)置密鑰大小            string myKeyString = this.t

17、xtMima1.Text;            if (myKeyString.Length = 6)                            myDESKey = new byte (byte)myKeyStri

18、ng0, (byte)myKeyString1, (byte)myKeyString2, (byte)myKeyString3, (byte)myKeyString4, (byte)myKeyString5, 0x07, 0x08 ;                        if (myKeyString.Length = 7)   

19、0;                        myDESKey = new byte (byte)myKeyString0, (byte)myKeyString1, (byte)myKeyString2, (byte)myKeyString3, (byte)myKeyString4, (byte)myKeyString5, (byte)myKeyString6, 0x07

20、;                        if (myKeyString.Length >=8)                       &#

21、160;    myDESKey = new byte (byte)myKeyString0, (byte)myKeyString1, (byte)myKeyString2, (byte)myKeyString3, (byte)myKeyString4, (byte)myKeyString5, (byte)myKeyString6, (byte)myKeyString7 ;                 

22、       /創(chuàng)建輸入和輸出文件流            FileStream myInFileStream = new FileStream(myInFileName, FileMode.Open, FileAccess.Read);            FileStream myOutFileStream =

23、new FileStream(myOutFileName, FileMode.OpenOrCreate, FileAccess.Write);            myOutFileStream.SetLength(0);            /每次的中間流          

24、;  byte inSertData = new byte100;            /代表已經(jīng)加密流的大小            int completedLength = 0;            /代表要加密文件總的大小  &#

25、160;         long inFileSize = myInFileStream.Length;            /創(chuàng)建DES對(duì)象            DES myDES = new DESCryptoServiceProvider();   

26、0;        /創(chuàng)建加密流            CryptoStream enCrytoStream = new CryptoStream(myOutFileStream, myDES.CreateEncryptor(myDESKey, myDESIV), CryptoStreamMode.Write);         

27、;   /從輸入文件中讀取流,然后加密到輸出文件流            while (completedLength < inFileSize)                            /

28、每次寫入加密文件的數(shù)據(jù)大小                int length = myInFileStream.Read(inSertData, 0, 100);                enCrytoStream.Write(inSertData, 0, length); 

29、60;              completedLength += length;                        /關(guān)閉流         

30、   enCrytoStream.Close();            myInFileStream.Close();            myOutFileStream.Close();            MessageBox.Show(&

31、quot;文件加密操作成功!", "小俠提示您:", MessageBoxButtons.OK, MessageBoxIcon.Information);                               上面是加密的代碼,解密的代碼幾乎和上面完全一樣,步驟思路完全一樣。看下面,

32、可對(duì)比上面:主要是在try()里面有以下實(shí)現(xiàn),其他代碼相同,略:       /獲得要解密的文件名        /獲得要保存的文件名        /設(shè)定初始向量        /根據(jù)密碼算出密鑰        /創(chuàng)建輸入和輸出文件流 &

33、#160;      /每次的中間流        /代表已經(jīng)加密流的大小        /代表要加密文件總的大小        /創(chuàng)建DES對(duì)象         /創(chuàng)建解密流         /從輸入文件中讀取流,然后解密到輸出文件中             &

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論