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

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

这个小程序,算不上什么.为了节省时间.请看代码!

 

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 );  }

  #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());   }  }

 }}

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值