using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO;
using System.Security.Cryptography;
namespace WindowsApplication5
{
public partial class Form1 : Form
{
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.TextBox textBox3;
private System.Windows.Forms.TextBox textBox4;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.Button button3;
private System.Windows.Forms.Button button4;
private System.Windows.Forms.GroupBox groupBox2;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Button button5;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.TextBox textBox5;
private System.Windows.Forms.TextBox textBox6;
private System.Windows.Forms.TextBox textBox7;
private System.Windows.Forms.Button button6;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.Button button7;
private System.Windows.Forms.SaveFileDialog saveFileDialog1;
private System.Windows.Forms.OpenFileDialog openFileDialog1;
public Form1()
{
InitializeComponent();
}
/// <summary>
/// “选择加密文件“浏览按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, System.EventArgs e)
{
OpenFileDialog ffile=new OpenFileDialog();
ffile.Title = "选择需要加密的文件" ;
ffile.Filter="所有文件 (*.*)|*.*";
if(ffile.ShowDialog()==DialogResult.OK)
{
//将待加密文件的路径写入文本框1
textBox1.Text=ffile.FileName;
}
}
/// <summary>
/// “选择输出文件“浏览按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, System.EventArgs e)
{
SaveFileDialog jfile=new SaveFileDialog();
jfile.Filter="加密文件(*.mef)|*.mef|所有文件 (*.*)|*.*";
if(jfile.ShowDialog()==DialogResult.OK)
{
//将输出文件路径写入文本框2
textBox2.Text=jfile.FileName;
}
}
/// <summary>
/// 判断密码是否符合要求
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button3_Click(object sender, System.EventArgs e)
{
if(textBox3.Text==textBox4.Text)//判断密码是否符合要求
{
if(textBox3.Text.Length<5)
{
MessageBox.Show("输入的密码少于6位,请重新输入");
textBox3.Text="";
textBox4.Text="";
return;
}
}
else
{
MessageBox.Show("两次输入的密码不匹配,请重新输入");
textBox3.Text="";
textBox4.Text="";
return;
}
if(textBox1.Text==""||textBox2.Text=="")//判断是否输入了文件名
{
MessageBox.Show("请选择好正确的输入输出文件");
}
else
{
button4.Enabled=true;
}
}
/// <summary>
/// “开始加密“按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button4_Click(object sender, System.EventArgs e)
{
FileStream fin;
FileStream fout;
try
{
fin=new FileStream(textBox1.Text,FileMode.Open,FileAccess.Read);
fout=new FileStream(textBox2.Text,FileMode.OpenOrCreate,FileAccess.Write);
}
catch
{
MessageBox.Show("输入的文件路径不可访问");
return;
}
//每次加密的中间流
byte[] bin=new byte[128];
//设定初始向量值
byte[] desIV={0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18};
byte[] desKey=new byte[8];
//根据密码得到密钥
string keystring=this.textBox3.Text;
if(keystring.Length>=8)
{
desKey[0]=(byte)keystring[0];desKey[1]=(byte)keystring[1];
desKey[2]=(byte)keystring[2];desKey[3]=(byte)keystring[3];
desKey[4]=(byte)keystring[4];desKey[5]=(byte)keystring[5];
desKey[6]=(byte)keystring[6];desKey[7]=(byte)keystring[7];
}
if(keystring.Length==7)
{
desKey[0]=(byte)keystring[0];desKey[1]=(byte)keystring[1];
desKey[2]=(byte)keystring[2];desKey[3]=(byte)keystring[3];
desKey[4]=(byte)keystring[4];desKey[5]=(byte)keystring[5];
desKey[6]=(byte)keystring[6];desKey[7]=0x18;
}
if(keystring.Length==6)
{
desKey[0]=(byte)keystring[0];desKey[1]=(byte)keystring[1];
desKey[2]=(byte)keystring[2];desKey[3]=(byte)keystring[3];
desKey[4]=(byte)keystring[4];desKey[5]=(byte)keystring[5];
desKey[6]=0x17;desKey[7]=0x18;
}
//创建DES对象
DES des=new DESCryptoServiceProvider();
//创建加密流。用指定的密钥 (Key) 和初始化向量 (IV) 创建对称数据加密标准 (DES) 加密器对象。
CryptoStream encStream=new CryptoStream(fout,des.CreateEncryptor(desKey,desIV),CryptoStreamMode.Write);
int complete=0;//代表已经加密的流的大小
long totlen=fin.Length;//代表加密文件总的大小
int len;//每次写入的大小
//从输入文件中读取流,然后加密到输出文件中
while(complete<totlen)
{
len=fin.Read(bin,0,128);
encStream.Write(bin,0,len);
complete+=len;
}
//关闭流
encStream.Close();
fout.Close();
fin.Close();
MessageBox.Show("文件加密已经完成");
button4.Enabled=false;
}
/// <summary>
/// “选择需要解密的文件”按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button5_Click(object sender, System.EventArgs e)
{
OpenFileDialog ofDialog=new OpenFileDialog();
ofDialog.Title = "选择需要解密的文件" ;
ofDialog.Filter="加密文件(*.mef)|*.mef|所有文件 (*.*)|*.*";
if(ofDialog.ShowDialog()==DialogResult.OK)
{
//将待加密文件的路径写入文本框1
textBox5.Text=ofDialog.FileName;
}
}
/// <summary>
/// “解密的文件输出”按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button6_Click(object sender, System.EventArgs e)
{
SaveFileDialog sfDialog=new SaveFileDialog();
sfDialog.Title="请选择解密后的文件保存路径";
sfDialog.Filter="所有文件(*.*)|*.*";
if(sfDialog.ShowDialog()==DialogResult.OK)
{
textBox6.Text=sfDialog.FileName;
}
}
/// <summary>
/// 解密按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button7_Click(object sender, System.EventArgs e)
{
//创建输入输出文件流
FileStream fin,fout;
try
{
fin=new FileStream(textBox5.Text,FileMode.Open,FileAccess.Read);
fout=new FileStream(textBox6.Text,FileMode.OpenOrCreate,FileAccess.Write);
}
catch(Exception error)
{
//MessageBox.Show("打开文件出错,请重新选择输入或输出文件");
MessageBox.Show(error.Message, "解密出错", MessageBoxButtons.OK,MessageBoxIcon.Warning);
return;
}
//每次解密的中间流
byte[] bin=new byte[128];
//设定初始向量值
byte[] desIV={0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18};
byte[] desKey=new byte[8];
//根据密码得到密钥
string keystring=this.textBox7.Text;
if(keystring.Length>=8)
{
desKey[0]=(byte)keystring[0];desKey[1]=(byte)keystring[1];
desKey[2]=(byte)keystring[2];desKey[3]=(byte)keystring[3];
desKey[4]=(byte)keystring[4];desKey[5]=(byte)keystring[5];
desKey[6]=(byte)keystring[6];desKey[7]=(byte)keystring[7];
}
if(keystring.Length==7)
{
desKey[0]=(byte)keystring[0];desKey[1]=(byte)keystring[1];
desKey[2]=(byte)keystring[2];desKey[3]=(byte)keystring[3];
desKey[4]=(byte)keystring[4];desKey[5]=(byte)keystring[5];
desKey[6]=(byte)keystring[6];desKey[7]=0x18;
}
if(keystring.Length==6)
{
desKey[0]=(byte)keystring[0];desKey[1]=(byte)keystring[1];
desKey[2]=(byte)keystring[2];desKey[3]=(byte)keystring[3];
desKey[4]=(byte)keystring[4];desKey[5]=(byte)keystring[5];
desKey[6]=0x17;desKey[7]=0x18;
}
int complete=0;//代表已经解密的流的大小
long totlen=fin.Length;//代表解密文件总的大小
int len;//每次写入的大小
//创建DES对象 .定义访问数据加密标准 (DES) 算法的加密服务提供程序 (CSP) 版本的包装对象。
DES des=new DESCryptoServiceProvider();
//定义将数据流链接到加密转换的流
CryptoStream decStream;//创建解密流
try
{
//用指定的密钥 (Key) 和初始化向量 (IV) 创建对称数据加密标准 (DES) 解密器对象。
decStream=new CryptoStream(fout,des.CreateDecryptor(desKey,desIV),CryptoStreamMode.Write);
//从输入文件中读取流,然后解密到输出文件中
while(complete<totlen)
{
len=fin.Read(bin,0,128);
decStream.Write(bin,0,len);
complete+=len;
}
//关闭流
decStream.Close();
fin.Close();
fout.Close();
MessageBox.Show("文件解密成功");
}
catch
{
MessageBox.Show("密码输入错误");
}
}
}
}
// form.designer.cs
namespace WindowsApplication5
{
partial class Form1
{
/// <summary>
/// 必要なデザイナ変数です。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 使用中のリソースをすべてクリーンアップします。
/// </summary>
/// <param name="disposing">マネージ リソースが破棄される場合 true、破棄されない場合は false です。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows フォーム デザイナで生成されたコード
/// <summary>
/// デザイナ サポートに必要なメソッドです。このメソッドの内容を
/// コード エディタで変更しないでください。
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Text = "Form1";
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.button1 = new System.Windows.Forms.Button();
this.textBox1 = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.textBox2 = new System.Windows.Forms.TextBox();
this.textBox3 = new System.Windows.Forms.TextBox();
this.textBox4 = new System.Windows.Forms.TextBox();
this.button2 = new System.Windows.Forms.Button();
this.button3 = new System.Windows.Forms.Button();
this.button4 = new System.Windows.Forms.Button();
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.label6 = new System.Windows.Forms.Label();
this.button5 = new System.Windows.Forms.Button();
this.label7 = new System.Windows.Forms.Label();
this.textBox5 = new System.Windows.Forms.TextBox();
this.textBox6 = new System.Windows.Forms.TextBox();
this.textBox7 = new System.Windows.Forms.TextBox();
this.button6 = new System.Windows.Forms.Button();
this.label8 = new System.Windows.Forms.Label();
this.button7 = new System.Windows.Forms.Button();
this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();
this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
this.groupBox1.SuspendLayout();
this.groupBox2.SuspendLayout();
this.SuspendLayout();
//
// groupBox1
//
this.groupBox1.Controls.Add(this.button1);
this.groupBox1.Controls.Add(this.textBox1);
this.groupBox1.Controls.Add(this.label1);
this.groupBox1.Controls.Add(this.label2);
this.groupBox1.Controls.Add(this.label3);
this.groupBox1.Controls.Add(this.label4);
this.groupBox1.Controls.Add(this.label5);
this.groupBox1.Controls.Add(this.textBox2);
this.groupBox1.Controls.Add(this.textBox3);
this.groupBox1.Controls.Add(this.textBox4);
this.groupBox1.Controls.Add(this.button2);
this.groupBox1.Controls.Add(this.button3);
this.groupBox1.Controls.Add(this.button4);
this.groupBox1.Location = new System.Drawing.Point(8, 8);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(360, 224);
this.groupBox1.TabIndex = 0;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "文件加密";
//
// button1
//
this.button1.Location = new System.Drawing.Point(272, 24);
this.button1.Name = "button1";
this.button1.TabIndex = 2;
this.button1.Text = "浏览";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(104, 24);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(160, 21);
this.textBox1.TabIndex = 1;
this.textBox1.Text = "";
//
// label1
//
this.label1.Location = new System.Drawing.Point(16, 24);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(80, 24);
this.label1.TabIndex = 0;
this.label1.Text = "选择加密文件";
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// label2
//
this.label2.Location = new System.Drawing.Point(16, 64);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(80, 24);
this.label2.TabIndex = 0;
this.label2.Text = "输出文件名";
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// label3
//
this.label3.ForeColor = System.Drawing.Color.Red;
this.label3.Location = new System.Drawing.Point(16, 184);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(128, 24);
this.label3.TabIndex = 0;
this.label3.Text = "请注意:密码至少6位";
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// label4
//
this.label4.Location = new System.Drawing.Point(16, 104);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(80, 24);
this.label4.TabIndex = 0;
this.label4.Text = "设定密码";
this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// label5
//
this.label5.Location = new System.Drawing.Point(16, 144);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(80, 24);
this.label5.TabIndex = 0;
this.label5.Text = "确认密码";
this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// textBox2
//
this.textBox2.Location = new System.Drawing.Point(104, 64);
this.textBox2.Name = "textBox2";
this.textBox2.Size = new System.Drawing.Size(160, 21);
this.textBox2.TabIndex = 1;
this.textBox2.Text = "";
//
// textBox3
//
this.textBox3.Location = new System.Drawing.Point(104, 104);
this.textBox3.Name = "textBox3";
this.textBox3.PasswordChar = '*';
this.textBox3.Size = new System.Drawing.Size(160, 21);
this.textBox3.TabIndex = 1;
this.textBox3.Text = "";
//
// textBox4
//
this.textBox4.Location = new System.Drawing.Point(104, 144);
this.textBox4.Name = "textBox4";
this.textBox4.PasswordChar = '*';
this.textBox4.Size = new System.Drawing.Size(160, 21);
this.textBox4.TabIndex = 1;
this.textBox4.Text = "";
//
// button2
//
this.button2.Location = new System.Drawing.Point(272, 64);
this.button2.Name = "button2";
this.button2.TabIndex = 2;
this.button2.Text = "浏览";
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// button3
//
this.button3.Location = new System.Drawing.Point(272, 144);
this.button3.Name = "button3";
this.button3.TabIndex = 2;
this.button3.Text = "确定";
this.button3.Click += new System.EventHandler(this.button3_Click);
//
// button4
//
this.button4.Enabled = false;
this.button4.Location = new System.Drawing.Point(272, 184);
this.button4.Name = "button4";
this.button4.TabIndex = 2;
this.button4.Text = "开始加密";
this.button4.Click += new System.EventHandler(this.button4_Click);
//
// groupBox2
//
this.groupBox2.Controls.Add(this.label6);
this.groupBox2.Controls.Add(this.button5);
this.groupBox2.Controls.Add(this.label7);
this.groupBox2.Controls.Add(this.textBox5);
this.groupBox2.Controls.Add(this.textBox6);
this.groupBox2.Controls.Add(this.textBox7);
this.groupBox2.Controls.Add(this.button6);
this.groupBox2.Controls.Add(this.label8);
this.groupBox2.Controls.Add(this.button7);
this.groupBox2.Location = new System.Drawing.Point(8, 240);
this.groupBox2.Name = "groupBox2";
this.groupBox2.Size = new System.Drawing.Size(360, 144);
this.groupBox2.TabIndex = 1;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "文件解密";
//
// label6
//
this.label6.Location = new System.Drawing.Point(16, 64);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(80, 24);
this.label6.TabIndex = 0;
this.label6.Text = "输出文件名";
this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// button5
//
this.button5.Location = new System.Drawing.Point(272, 24);
this.button5.Name = "button5";
this.button5.TabIndex = 2;
this.button5.Text = "浏览";
this.button5.Click += new System.EventHandler(this.button5_Click);
//
// label7
//
this.label7.Location = new System.Drawing.Point(16, 104);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(80, 24);
this.label7.TabIndex = 0;
this.label7.Text = "输入解密密码";
this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// textBox5
//
this.textBox5.Location = new System.Drawing.Point(104, 24);
this.textBox5.Name = "textBox5";
this.textBox5.Size = new System.Drawing.Size(160, 21);
this.textBox5.TabIndex = 1;
this.textBox5.Text = "";
//
// textBox6
//
this.textBox6.Location = new System.Drawing.Point(104, 64);
this.textBox6.Name = "textBox6";
this.textBox6.Size = new System.Drawing.Size(160, 21);
this.textBox6.TabIndex = 1;
this.textBox6.Text = "";
//
// textBox7
//
this.textBox7.Location = new System.Drawing.Point(104, 104);
this.textBox7.Name = "textBox7";
this.textBox7.PasswordChar = '*';
this.textBox7.Size = new System.Drawing.Size(160, 21);
this.textBox7.TabIndex = 1;
this.textBox7.Text = "";
//
// button6
//
this.button6.Location = new System.Drawing.Point(272, 64);
this.button6.Name = "button6";
this.button6.TabIndex = 2;
this.button6.Text = "浏览";
this.button6.Click += new System.EventHandler(this.button6_Click);
//
// label8
//
this.label8.Location = new System.Drawing.Point(16, 24);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(80, 24);
this.label8.TabIndex = 0;
this.label8.Text = "选择解密文件";
this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// button7
//
this.button7.Location = new System.Drawing.Point(272, 104);
this.button7.Name = "button7";
this.button7.TabIndex = 2;
this.button7.Text = "开始解密";
this.button7.Click += new System.EventHandler(this.button7_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(376, 390);
this.Controls.Add(this.groupBox1);
this.Controls.Add(this.groupBox2);
this.Name = "Form1";
this.Text = "加密解密";
this.groupBox1.ResumeLayout(false);
this.groupBox2.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
}
}