当前位置:中国站长下载文章中心网页编程.NET编程 → 一个可逆加密的例子(2)

一个可逆加密的例子(2)

减小字体 增大字体 作者:不详  来源:不详  发布时间:2006-8-14 9:14:30
     C#代码
  
  EncryptString.aspx
  
  <%@ Page language="c#" EnableViewState = "true" Codebehind="EncryptString.aspx.cs" AutoEventWireup="false" Inherits="eMeng.Exam.EncryptString" %>
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  <HTML>
  <HEAD>
  <title>一个可逆加密的例子</title>
  <meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
  <meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
  <meta name="vs_defaultClientScript" content="JavaScript">
  <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
  </HEAD>
  <body>
  <form id="Form1" method="post" runat="server">
  <p align="center">一个可逆加密的例子
  <asp:TextBox id="TextBox1" runat="server" Width="96%">http://dotnet.aspx.cc/</asp:TextBox>
  <asp:RadioButtonList id="RadioButtonList1" runat="server" Font-Bold="True" RepeatDirection="Horizontal"
  AutoPostBack="True"></asp:RadioButtonList>
  <asp:TextBox id="TextBox2" runat="server" Width="96%"></asp:TextBox>
  <asp:TextBox id="Textbox3" runat="server" Width="96%"></asp:TextBox>
  </p>
  </form>
  </body>
  </HTML>
  
  EncryptString.aspx.cs
  
  using System;
  using System.Collections;
  using System.ComponentModel;
  using System.Drawing;
  using System.Web;
  using System.Web.SessionState;
  using System.Web.UI;
  using System.Web.UI.WebControls;
  using System.Web.UI.HtmlControls;
  using System.IO;
  using System.Text;
  using System.Security.Cryptography;
  
  
  namespace eMeng.Exam
  {
  /// <summary>
  /// EncryptString 的摘要说明。
  /// </summary>
  public class EncryptString : System.Web.UI.Page
  {
  protected System.Web.UI.WebControls.TextBox TextBox1;
  protected System.Web.UI.WebControls.RadioButtonList RadioButtonList1;
  protected System.Web.UI.WebControls.TextBox TextBox2;
  protected System.Web.UI.WebControls.TextBox Textbox3;
  protected System.Web.UI.HtmlControls.HtmlForm Form1;
  
  private void Page_Load(object sender, System.EventArgs e)
  {
  // 在此处放置用户代码以初始化页面
  if(!this.IsPostBack)
  {
  ArrayList MyList = new ArrayList();
  MyList.Add("加密");
  MyList.Add("解密");
  RadioButtonList1.DataSource = MyList;
  RadioButtonList1.DataBind();
  }
  }
  
  #region Web 窗体设计器生成的代码
  override protected void OnInit(EventArgs e)
  {
  //
  // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
  //
  InitializeComponent();
  base.OnInit(e);
  }
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {
  this.RadioButtonList1.SelectedIndexChanged += new System.EventHandler(this.RadioButtonList1_SelectedIndexChanged);
  this.Load += new System.EventHandler(this.Page_Load);
  
  }
  #endregion
  
  private void RadioButtonList1_SelectedIndexChanged(object sender, System.EventArgs e)
  {
  if( RadioButtonList1.SelectedIndex == 0)
  TextBox2.Text = EncryptText(TextBox1.Text);
  else
  Textbox3.Text = DecryptText(TextBox2.Text);
  }
  // 加密
  public string EncryptText(String strText)
  {
  return Encrypt(strText, "&%#@?,:*");
  }
  
  //'解密
  public String DecryptText(String strText)
  {
  return Decrypt(strText, "&%#@?,:*");
  }
  //'加密函数
  private String Encrypt(String strText, String strEncrKey)
  {
  Byte[] byKey = {};
  Byte[] IV = {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF};
  try
  {
  byKey = System.Text.Encoding.UTF8.GetBytes(strEncrKey.Substring(0, 8));
  DESCryptoServiceProvider des = new DESCryptoServiceProvider();
  Byte[] inputByteArray = Encoding.UTF8.GetBytes(strText);
  MemoryStream ms = new MemoryStream();
  CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byKey, IV), CryptoStreamMode.Write);
  cs.Write(inputByteArray, 0, inputByteArray.Length);
  cs.FlushFinalBlock();
  return Convert.ToBase64String(ms.ToArray());
  }
  catch(Exception ex)
  {
  return ex.Message;
  }
  }
  
  //'解密函数
  private String Decrypt(String strText, String sDecrKey)
  {
  Byte[] byKey = {};
  Byte[] IV = {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF};
  Byte[] inputByteArray = new byte[strText.Length];
  try
  {
  byKey = System.Text.Encoding.UTF8.GetBytes(sDecrKey.Substring(0, 8));
  DESCryptoServiceProvider des = new DESCryptoServiceProvider();
  inputByteArray = Convert.FromBase64String(strText);
  MemoryStream ms = new MemoryStream();
  CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(byKey, IV), CryptoStreamMode.Write);
  cs.Write(inputByteArray, 0, inputByteArray.Length);
  cs.FlushFinalBlock();
  System.Text.Encoding encoding = System.Text.Encoding.UTF8;
  return encoding.GetString(ms.ToArray());
  }
  catch(Exception ex)
  {
  return ex.Message;
  }
  }
  }
  }
  
    做人要厚道,请注明转自chinazhan中国站长(www.ChinaZhan.com)。