导航

C# DES加密与解密算法实例

Posted on 2009-01-04 11:47  ccjvl  阅读(751)  评论(0编辑  收藏  举报

引入System.Web.dll,用System.Web命名空间的
pass = FormsAuthentication.HashPasswordForStoringInConfigFile(pass, "MD5");

 

 

Code

 

 

先看下效果

点加密
加密出来了~
然后点解密
解密成功~就算你再次启动程序~也是一样可以的情况~
代码如下~仔细看哦 ~~我不多说明了~
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
//添加
using System.Globalization;
using System.Security.Cryptography;

namespace WindowsApplication1
{
      public partial class Form1 : Form
      {
          public Form1()
          {
              InitializeComponent();
          }
          public string key="??^&$%^&";//随便写~
          public string s2;
          //// 创建Key
          //public string GenerateKey()
          //{
          //      DESCryptoServiceProvider desCrypto = (DESCryptoServiceProvider)DESCryptoServiceProvider.Create();
          //      return ASCIIEncoding.ASCII.GetString(desCrypto.Key);
          //}
          // 加密字符串
          public string EncryptString(string sInputString, string sKey)
          {
              byte[] data = Encoding.UTF8.GetBytes(sInputString);
              DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
              DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
              DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
              ICryptoTransform desencrypt = DES.CreateEncryptor();
              byte[] result = desencrypt.TransformFinalBlock(data, 0, data.Length);
              return BitConverter.ToString(result);
          }
          // 解密字符串
          public string DecryptString(string sInputString, string sKey)
          {
              string[] sInput = sInputString.Split("-".ToCharArray());
              byte[] data = new byte[sInput.Length];
              for (int i = 0; i < sInput.Length; i++)
              {
                  data[i] = byte.Parse(sInput[i], NumberStyles.HexNumber);
              }
              DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
              DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
              DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
              ICryptoTransform desencrypt = DES.CreateDecryptor();
              byte[] result = desencrypt.TransformFinalBlock(data, 0, data.Length);
              return Encoding.UTF8.GetString(result);
          }
        
          private void Form1_Load(object sender, EventArgs e)
          {
          }
          private void button1_Click(object sender, EventArgs e)
          {//加密
              textBox2.Text = EncryptString(textBox1.Text, key);
          }
          private void button2_Click(object sender, EventArgs e)
          {//解密
              textBox2.Text = DecryptString(textBox1.Text, key);
          }
      }
}
以上在VS2005中运行成功~^_^~~
Code