国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

C#-對稱加密的一個例子 Rijndael

2024-07-21 02:27:13
字體:
來源:轉載
供稿:網(wǎng)友

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;

  //創(chuàng)建實例
  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 調用后添加任何構造函數(shù)代碼
   //
  }

  ///
  /// 清理所有正在使用的資源。
  ///
  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);
  }
  //用于加密的函數(shù)
  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());
   }
  }
  //用于解密的函數(shù)
  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;
   }
  }
  //刪除文件的函數(shù)
  public void deletefile(string filename)
  {
   try
   {
    file.delete(filename);   
   }
   catch (exception e)
   {
    messagebox.show(e.tostring());
   }
  }


 }
}


 



發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 杨浦区| 罗平县| 都江堰市| 宁南县| 铜山县| 玉树县| 英德市| 会泽县| 孟津县| 鸡泽县| 武平县| 新兴县| 祁门县| 栾川县| 达州市| 隆子县| 苍梧县| 曲沃县| 乾安县| 普兰店市| 古浪县| 西充县| 阿克陶县| 临朐县| 凤庆县| 宜良县| 景洪市| 文昌市| 宝兴县| 巴中市| 桦南县| 贞丰县| SHOW| 台东市| 奉节县| 西林县| 瓦房店市| 淮阳县| 武功县| 平顺县| 兴化市|