⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.cs

📁 本源码为C#编程
💻 CS
📖 第 1 页 / 共 2 页
字号:

		}
		#endregion

		/// <summary>
		/// 应用程序的主入口点。
		/// </summary>
		[STAThread]
		static void Main() 
		{
			Application.Run(new Form1());
		}

		#region 解密
		private void button3_Click(object sender, System.EventArgs e)
		{
			if(this.textBox1.Text!=""&&this.textBox2.Text!="")
			{
				statusBar1.Visible=true;
				statusBar1.Text="正在解密文件,请等待.....";
				
				
				
				if(DecryptFile(this.textBox1.Text,this.textBox2.Text,"123456"))
				{
					statusBar1.Text="解密完成。";
					
					MessageBox.Show("解密成功!");
					
				}
				statusBar1.Visible=false;
				

			}
			else
			{
				MessageBox.Show("文件路径不能为空");
			}
			

		}
		#endregion

		#region 加密
		private void button2_Click(object sender, System.EventArgs e)
		{
			if(this.textBox1.Text!=""&&this.textBox2.Text!="")
			{
				
				statusBar1.Visible=true;
				statusBar1.Text="正在加密文件,请等待.....";
				
				
			  
				if(EncryptFile(this.textBox1.Text,this.textBox2.Text,"123456"))
				{
					statusBar1.Text="加密完成。";
					MessageBox.Show("加密成功!");
				}
				statusBar1.Visible=false;
				
			}
			else
			{
				MessageBox.Show("文件路径不能为空");
			}
		
		}
		#endregion

		#region 打开保存文件
		private void button1_Click(object sender, System.EventArgs e)
		{
			openFileDialog1.ShowDialog();
			string filename=openFileDialog1.FileName;
			int i=filename.LastIndexOf(".");
			if(i!=-1)
			{
				string filetype=filename.Substring(filename.LastIndexOf("."));
				if(this.radioButton1.Checked)
				{
					filename=filename.Replace("(解密文件)","");
					textBox2.Text=filename.Substring(0,filename.LastIndexOf("."))+"(加密文件)"+filetype;
				}
				else
				{
					filename=filename.Replace("(加密文件)","");
					textBox2.Text=filename.Substring(0,filename.LastIndexOf("."))+"(解密文件)"+filetype;

				}
			}
			if(filename!="")
			{
				textBox1.Text=openFileDialog1.FileName;
				
			}
		}

		private void button4_Click(object sender, System.EventArgs e)
		{
			this.saveFileDialog1.ShowDialog();
			if(saveFileDialog1.FileName!="")
			{
				this.textBox2.Text=saveFileDialog1.FileName;
			}

		} 
		#endregion

		#region 加密方法
		public bool EncryptFile(string filePath,string savePath,string keyStr)
        { /* 类中创建一个命名为 EncryptFile 的方法。EncryptFile 类必须具有以下 3 个参数:             * sInputFilename  sOutputFilename             sKey(用于加密和解密文件的密钥。) */
			DESCryptoServiceProvider des = new DESCryptoServiceProvider();
            /*声明一个 DESCryptoServiceProvider 类的实例。这表示对文件使用的实际加密和解密技术*/
			if(keyStr=="") 
				keyStr=key; 
			FileStream fs=File.OpenRead(filePath);
            /*在 EncryptFile 过程中,创建一个输入 FileStream 对象和一个输出 FileStream 对象。这些对象可以从目标文件中读取和向其中写入。*/
			byte[] inputByteArray =new byte[fs.Length]; 
			fs.Read(inputByteArray,0,(int)fs.Length); 
			fs.Close(); 
			byte[] keyByteArray=Encoding.Default.GetBytes(keyStr); 
			SHA1 ha=new SHA1Managed(); 
			byte[] hb=ha.ComputeHash(keyByteArray); 
			sKey=new byte[8]; 
			sIV=new byte[8]; 
			for(int i=0;i<8;i++) 
				sKey[i]=hb[i];
            for (int i = 8; i < 16; i++) //数据加密标准 (DES) 使用等于 8 个字节或 8 个字符的 64 位密钥
				sIV[i-8]=hb[i]; 
			des.Key=sKey;
            des.IV = sIV; //DESCryptoService基于一种对称加密算法。对称加密需要密钥和初始化矢量 (IV) 来加密数据
			MemoryStream ms = new MemoryStream(); 
			CryptoStream cs = new CryptoStream(ms,des.CreateEncryptor(),CryptoStreamMode.Write);
            /*创建一个 CryptoStream 类的实例,方法是:使用加密提供程序获得一个加密对象(CreateEncryptor),
             * 并将现有的输出 FileStream 对象作为构造函数的一部分。
             CryptoStream 类设计用于在内容以流的形式输出到文件时加密和解密内容  */
            cs.Write(inputByteArray, 0, inputByteArray.Length); 
			cs.FlushFinalBlock(); 
			fs=File.OpenWrite(savePath); 
			
			
			
			foreach(byte b in ms.ToArray()) 
			{ 
				fs.WriteByte(b);

            } //读入输入文件,然后写出到输出文件。传递 CryptoStream 对象,文件将使用您提供的密钥加密。
       
			
			fs.Close(); 
			cs.Close(); 
			ms.Close(); 
			return true; 
		}
		#endregion

		#region 解密方法
		public bool DecryptFile(string filePath,string savePath,string keyStr) 
		{ 
			DESCryptoServiceProvider des = new DESCryptoServiceProvider(); 
			if(keyStr=="") 
				keyStr=key; 
			FileStream fs=File.OpenRead(filePath); 
			byte[] inputByteArray =new byte[fs.Length]; 
			fs.Read(inputByteArray,0,(int)fs.Length); 
			fs.Close(); 
			byte[] keyByteArray=Encoding.Default.GetBytes(keyStr); 
			SHA1 ha=new SHA1Managed(); 
			byte[] hb=ha.ComputeHash(keyByteArray); 
			sKey=new byte[8]; 
			sIV=new byte[8]; 
			for(int i=0;i<8;i++) 
				sKey[i]=hb[i]; 
			for(int i=8;i<16;i++) 
				sIV[i-8]=hb[i]; 
			des.Key=sKey; 
			des.IV=sIV; 
			MemoryStream ms = new MemoryStream(); 
			CryptoStream cs = new CryptoStream(ms,des.CreateDecryptor(),CryptoStreamMode.Write); 
			cs.Write(inputByteArray, 0, inputByteArray.Length); 
			cs.FlushFinalBlock(); 
			fs=File.OpenWrite(savePath); 
			foreach(byte b in ms.ToArray()) 
			{ 
				fs.WriteByte(b); 
			} 
			fs.Close(); 
			cs.Close(); 
			ms.Close(); 
			return true; 
		} 
		#endregion

		#region 关闭
		private void button5_Click(object sender, System.EventArgs e)
		{
			this.Close();
		}
		#endregion

		#region 单选按钮
		private void radioButton1_CheckedChanged(object sender, System.EventArgs e)
		{
			if(radioButton1.Checked==true)
			{
				this.button2.Enabled=true;
				this.button3.Enabled=false;
			}
		}

		private void radioButton2_CheckedChanged(object sender, System.EventArgs e)
		{
			if(radioButton2.Checked==true)
			{
				this.button2.Enabled=false;
				this.button3.Enabled=true;
			}
		
		}
		#endregion

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }




		
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -