using cl; 
namespace test//给一个文本产生一个散列值
{
    /// <summary>
    /// computehash 的摘要说明。
    /// </summary>
    public class computehash : System.Web.UI.Page
    {
        protected System.Web.UI.WebControls.Label Label1;
        protected System.Web.UI.WebControls.TextBox TextBox1;
        protected System.Web.UI.WebControls.Button Button1;
        protected System.Web.UI.WebControls.TextBox TextBox3;
        protected System.Web.UI.WebControls.Button Button2;
        protected System.Web.UI.WebControls.TextBox TextBox4;
        protected System.Web.UI.WebControls.Button Button3;
        protected System.Web.UI.WebControls.TextBox TextBox5;
        protected System.Web.UI.WebControls.Button Button4;
        protected System.Web.UI.WebControls.Button Button5;
        protected System.Web.UI.WebControls.Label Label2;
        protected System.Web.UI.WebControls.TextBox TextBox7;
        protected System.Web.UI.WebControls.Label Label3;
        protected System.Web.UI.WebControls.TextBox TextBox8;
        protected System.Web.UI.WebControls.TextBox TextBox9;
        protected System.Web.UI.WebControls.Label Label4;
        protected System.Web.UI.WebControls.Button Button6;
        protected System.Web.UI.WebControls.Label Label5;
        protected System.Web.UI.WebControls.TextBox TextBox2;
 
        private void Page_Load(object sender, System.EventArgs e)
        {
            // 在此处放置用户代码以初始化页面
        }
 
        #region Web 窗体设计器生成的代码
        override protected void OnInit(EventArgs e)
        {
            //
            // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
            //
            InitializeComponent();
            base.OnInit(e);
        }
 
        /// <summary>
        /// 设计器支持所需的方法 - 不要使用代码编辑器修改
        /// 此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {
            this.Button2.Click += new System.EventHandler(this.Button2_Click);
            this.Button1.Click += new System.EventHandler(this.Button1_Click);
            this.Button3.Click += new System.EventHandler(this.Button3_Click);
            this.Button4.Click += new System.EventHandler(this.Button4_Click);
            this.Button5.Click += new System.EventHandler(this.Button5_Click);
            this.Button6.Click += new System.EventHandler(this.Button6_Click);
            this.Load += new System.EventHandler(this.Page_Load);
         }
        #endregion
 
        private void Button1_Click(object sender, System.EventArgs e)
        {
            //UTF8需要对Text的引用
            byte[] bt = UTF8Encoding.UTF8.GetBytes(TextBox1.Text);
            MD5CryptoServiceProvider objMD5;
            objMD5 = new MD5CryptoServiceProvider();
            byte[] output = objMD5.ComputeHash(bt);
            TextBox2.Text = BitConverter.ToString(output);
        }
 
        private void Button2_Click(object sender, System.EventArgs e)
        {
            //UTF8需要对Text的引用
            byte[] bt = UTF8Encoding.UTF8.GetBytes(TextBox1.Text);
            MD5CryptoServiceProvider objMD5;
            objMD5 = new MD5CryptoServiceProvider();
            byte[] output = objMD5.ComputeHash(bt);
            TextBox4.Text = BitConverter.ToString(output);
        }
 
        private void Button3_Click(object sender, System.EventArgs e)
        {
            Class1 cl = new Class1();
            string iv1 = cl.getiv();
            string key1 = cl.getkey();
 
            byte[] iv = UTF8Encoding.UTF8.GetBytes(iv1);
            byte[] key = UTF8Encoding.UTF8.GetBytes(key1);
            byte[] source = UTF8Encoding.UTF8.GetBytes(TextBox1.Text);
            //定义加密对象
            DESCryptoServiceProvider objdes;
            objdes = new DESCryptoServiceProvider();
            //设置加密对象值
            objdes.IV = iv;
            objdes.Key = key;
            //创建加密器对象
            ICryptoTransform objEncryptor;
            objEncryptor = objdes.CreateEncryptor(objdes.Key, objdes.IV);
            //准备将加密的文本写入secret.txt中
            FileStream objfs;
            objfs =
                new FileStream(MapPath("secret.txt"),
                    FileMode.Create, FileAccess.Write);
            //写入
            CryptoStream cryptostream;
            cryptostream =
                new CryptoStream(objfs, objEncryptor, CryptoStreamMode.Write);
            cryptostream.Write(source, 0, source.Length);
            cryptostream.Close();
        }
 
        private void Button4_Click(object sender, System.EventArgs e)
        { // 
www.jb200.com
            Class1 cl = new Class1();
            string iv1 = cl.getiv();
            string key1 = cl.getkey();
 
            byte[] iv = UTF8Encoding.UTF8.GetBytes(iv1);
            byte[] key = UTF8Encoding.UTF8.GetBytes(key1);
            byte[] source = UTF8Encoding.UTF8.GetBytes(TextBox1.Text);
            //定义加密对象
            DESCryptoServiceProvider objdes;
            objdes = new DESCryptoServiceProvider();
            //设置加密对象值
            objdes.IV = iv;
            objdes.Key = key;
            //创建加密器对象
            ICryptoTransform objEncryptor;
            objEncryptor = objdes.CreateEncryptor(objdes.Key, objdes.IV);
            //写到内存
            MemoryStream ms = new MemoryStream();
            CryptoStream cs =
                new CryptoStream(ms, objEncryptor, CryptoStreamMode.Write);
            cs.Write(source, 0, source.Length);
            cs.FlushFinalBlock();
            ms.Close();
            TextBox5.Text = BitConverter.ToString(ms.ToArray());
         }
 
        private void Button5_Click(object sender, System.EventArgs e)
        {
            DSACryptoServiceProvider objdsa;
            objdsa = new DSACryptoServiceProvider();
            byte[] source = UTF8Encoding.UTF8.GetBytes(TextBox1.Text);
            //公开秘钥
            TextBox8.Text = objdsa.ToXmlString(false);
            //私有秘钥
            TextBox9.Text = objdsa.ToXmlString(true);
            //数字签名
            TextBox7.Text = BitConverter.ToString(objdsa.SignData(source));
        } 
    }
}