您的位置:首页 > 编程语言 > C#

C#-对称加密的一个例子

2007-02-24 09:21 239 查看

C#-对称加密的一个例子




using System;


using System.Drawing;


using System.Collections;


using System.ComponentModel;


using System.Windows.Forms;


using System.Data;


using System.Security.Cryptography;


using System.IO;




namespace 对称加密应用




...{




/**////


/// Form1 的摘要说明。


///


public class Form1 : System.Windows.Forms.Form




...{


private System.Windows.Forms.TextBox textBox1;


private System.Windows.Forms.TextBox textBox2;


private System.Windows.Forms.Button button1;


private System.Windows.Forms.Button button2;




/**////


/// 必需的设计器变量。




private System.Windows.Forms.TextBox textBox3;


private System.Windows.Forms.OpenFileDialog openfile;


private System.Windows.Forms.Button button3;


private System.Windows.Forms.SaveFileDialog savefile;


private System.Windows.Forms.Button button4;


private System.Windows.Forms.Label label1;


private System.Windows.Forms.Label label2;


private System.Windows.Forms.CheckBox checkBox1;




//创建实例


RijndaelManaged rij = new RijndaelManaged();//


//全局变量,标记文件的扩展名


private static string ext=null;


//标记加密成功与否


private static bool enresult = false;


//标记解密成功与否的标记


private static bool deresult = false;






/**////


private System.ComponentModel.Container components = null;




public Form1()




...{


//


// Windows 窗体设计器支持所必需的


//


InitializeComponent();




//


// TODO: 在 InitializeComponent 调用后添加任何构造函数代码


//


}






/**////


/// 清理所有正在使用的资源。


///


protected override void Dispose( bool disposing )




...{


if( disposing )




...{


if (components != null)




...{


components.Dispose();


}


}


base.Dispose( disposing );


}






Windows 窗体设计器生成的代码#region Windows 窗体设计器生成的代码




/**////


/// 设计器支持所需的方法 - 不要使用代码编辑器修改


/// 此方法的内容。


///


private void InitializeComponent()




...{


this.textBox1 = new System.Windows.Forms.TextBox();


this.textBox2 = new System.Windows.Forms.TextBox();


this.button1 = new System.Windows.Forms.Button();


this.button2 = new System.Windows.Forms.Button();


this.textBox3 = new System.Windows.Forms.TextBox();


this.openfile = new System.Windows.Forms.OpenFileDialog();


this.button3 = new System.Windows.Forms.Button();


this.savefile = new System.Windows.Forms.SaveFileDialog();


this.button4 = new System.Windows.Forms.Button();


this.label1 = new System.Windows.Forms.Label();


this.label2 = new System.Windows.Forms.Label();


this.checkBox1 = new System.Windows.Forms.CheckBox();


this.SuspendLayout();


//


// textBox1


//


this.textBox1.Location = new System.Drawing.Point(88, 96);


this.textBox1.Name = "textBox1";


this.textBox1.Size = new System.Drawing.Size(168, 21);


this.textBox1.TabIndex = 0;


this.textBox1.Text = "";


//


// textBox2


//


this.textBox2.Location = new System.Drawing.Point(88, 136);


this.textBox2.Name = "textBox2";


this.textBox2.Size = new System.Drawing.Size(168, 21);


this.textBox2.TabIndex = 1;


this.textBox2.Text = "";


//


// button1


//


this.button1.Location = new System.Drawing.Point(88, 200);


this.button1.Name = "button1";


this.button1.TabIndex = 2;


this.button1.Text = "加密";


this.button1.Click += new System.EventHandler(this.button1_Click);


//


// button2


//


this.button2.Location = new System.Drawing.Point(192, 200);


this.button2.Name = "button2";


this.button2.TabIndex = 3;


this.button2.Text = "解密";


this.button2.Click += new System.EventHandler(this.button2_Click);


//


// textBox3


//


this.textBox3.HideSelection = false;


this.textBox3.Location = new System.Drawing.Point(88, 48);


this.textBox3.MaxLength = 17;


this.textBox3.Name = "textBox3";


this.textBox3.PasswordChar = ''$'';


this.textBox3.TabIndex = 4;


this.textBox3.Text = "";


this.textBox3.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;


//


// button3


//


this.button3.Location = new System.Drawing.Point(280, 96);


this.button3.Name = "button3";


this.button3.Size = new System.Drawing.Size(40, 23);


this.button3.TabIndex = 5;


this.button3.Text = "Open";


this.button3.Click += new System.EventHandler(this.button3_Click);


//


// button4


//


this.button4.Location = new System.Drawing.Point(280, 136);


this.button4.Name = "button4";


this.button4.Size = new System.Drawing.Size(40, 23);


this.button4.TabIndex = 6;


this.button4.Text = "Save";


this.button4.Click += new System.EventHandler(this.button4_Click);


//


// label1


//


this.label1.Location = new System.Drawing.Point(88, 24);


this.label1.Name = "label1";


this.label1.Size = new System.Drawing.Size(136, 23);


this.label1.TabIndex = 7;


this.label1.Text = "请输入你的密码:";


//


// label2


//


this.label2.Location = new System.Drawing.Point(216, 48);


this.label2.Name = "label2";


this.label2.Size = new System.Drawing.Size(184, 23);


this.label2.TabIndex = 8;


this.label2.Text = "(密码大小8至16个字符)";


//


// checkBox1


//


this.checkBox1.Location = new System.Drawing.Point(88, 168);


this.checkBox1.Name = "checkBox1";


this.checkBox1.Size = new System.Drawing.Size(216, 24);


this.checkBox1.TabIndex = 9;


this.checkBox1.Text = "删除源文件";


//


// Form1


//


this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);


this.ClientSize = new System.Drawing.Size(456, 278);


this.Controls.Add(this.checkBox1);


this.Controls.Add(this.label2);


this.Controls.Add(this.label1);


this.Controls.Add(this.button4);


this.Controls.Add(this.button3);


this.Controls.Add(this.textBox3);


this.Controls.Add(this.button2);


this.Controls.Add(this.button1);


this.Controls.Add(this.textBox2);


this.Controls.Add(this.textBox1);


this.Name = "Form1";


this.Text = "Form1";


this.ResumeLayout(false);




}


#endregion






/**////


/// 应用程序的主入口点。


///


[STAThread]


static void Main()




...{


Application.Run(new Form1());


}




//加密文件的按钮


private void button1_Click(object sender, System.EventArgs e)




...{


if(textBox1.Text != null || textBox2.Text != null)


encryption(textBox3.Text,textBox1.Text,textBox2.Text);


if(checkBox1.Checked==true && enresult==true)


DeleteFile(textBox1.Text);


}


//用于加密的函数


public void encryption(string textBox,string readfile,string writefile)




...{


try




...{


if(textBox.Length >=8 && textBox.Length<=16 )//判断密码的字符的大小




...{




byte [] key = System.Text.Encoding.Default.GetBytes( textBox );


byte [] iv = rij.IV;


Rijndael crypt = Rijndael.Create();


ICryptoTransform transform = crypt.CreateEncryptor(key ,iv);


//写进文件


FileStream fswrite = new FileStream(writefile,FileMode.Create);


CryptoStream cs = new CryptoStream( fswrite ,transform ,CryptoStreamMode.Write );


//打开文件


FileStream fsread = new FileStream(readfile,FileMode.Open);


int length;


while((length = fsread.ReadByte() )!= -1)


cs.WriteByte((byte)length);




fsread.Close();


cs.Close();


fswrite.Close();


enresult = true ;//成功加密


MessageBox.Show("已经成功完成加密任务!");


}


else




...{


      MessageBox.Show("密码的最小长度为8个字符,最大长度为16个字符!");


return ;


}


}


catch (Exception e)




...{


MessageBox.Show(e.ToString());


}


}


//用于解密的函数


public void decryption(string textBox,string readfile,string writefile)




...{


try




...{


if(textBox.Length >=8 && textBox.Length<=16 )




...{


byte [] key = System.Text.Encoding.Default.GetBytes( textBox );


byte [] iv = rij.IV;


Rijndael crypt = Rijndael.Create();


ICryptoTransform transform = crypt.CreateDecryptor(key,iv);


//读取加密后的文件


FileStream fsopen = new FileStream(readfile,FileMode.Open);


CryptoStream cs = new CryptoStream( fsopen ,transform ,CryptoStreamMode.Read );


//把解密后的结果写进文件


FileStream fswrite = new FileStream(writefile,FileMode.OpenOrCreate);


int length;


while ((length = cs.ReadByte()) != -1)


fswrite.WriteByte((byte)length);




fswrite.Close();


cs.Close();


fsopen.Close();


deresult=true; //成功解密


MessageBox.Show("已经成功完成解密任务!");


}


else




...{


      MessageBox.Show("密码的最小长度为8个字符,最大长度为16个字符!");


return ;


}


}


catch (Exception e)




...{


MessageBox.Show(e.ToString());


}


}


//解密文件


private void button2_Click(object sender, System.EventArgs e)




...{


decryption( textBox3.Text,textBox1.Text,textBox2.Text ) ;


if(checkBox1.Checked==true && deresult==true)


DeleteFile(textBox1.Text);


}


//用于打开文件的按钮


private void button3_Click(object sender, System.EventArgs e)




...{


openfile = new OpenFileDialog();openfile.Filter ="All files (*.*)|*.*" ;


openfile.ShowDialog();


textBox1.Text = openfile.FileName;


ext = getfileext(openfile.FileName);


}




private void button4_Click(object sender, System.EventArgs e)




...{


savefile = new SaveFileDialog();


savefile.Filter =ext + " files" +"(*."+ext+")|*."+ ext +"|All files (*.*)|*.*" ;


savefile.ShowDialog();


textBox2.Text = savefile.FileName;


}


//得到文件的扩展名


private string getfileext(string filename)




...{


try




...{




char [] point = new char[] ...{''.''};


string [] filename2 = filename.Split(point);


return filename2[1];


}


catch




...{


return null;


}


}


//删除文件的函数


public void DeleteFile(string filename)




...{


try




...{


File.Delete(filename);


}


catch (Exception e)




...{


MessageBox.Show(e.ToString());


}


}






}


}



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: