asp.net实现文本的DES加密、MD5散列值、DSA的数字签名

发布时间:2020-04-25编辑:脚本学堂
分享一例asp.net代码,用于实现文本的DES加密、MD5散列值,以及DSA的数字签名,有需要的朋友参考下。

本节内容:
文本的DES加密、MD5散列值、DSA的数字签名

1,文本的DES加密
为了对称加密的安全,将密码进行封装,先新建一个用于保存密码的类库cl:
 

复制代码 代码示例:
using System;
using System.Text;
namespace cl
{
    /// <summary>
    /// Class1 的摘要说明。
    /// </summary>
    public class Class1
    {
        public Class1()
        {
        }
        public string getiv()
        {
            string iv = "********";//八位
            return iv;
        }
        public string getkey()
        {
            string key = "01160129";//八位
            return key;
        }
     }
}
 

2,然后新建asp.net项目(C#)
在 .aspx中
 

复制代码 代码示例:
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));
        }
    }
}