URL参数加密C#实现

定义加密使用的类 des

//定义开始

    public class DES
    {
        public DES()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
        }

        //默认密钥向量
        private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };

        //密钥
        public string KeyValue = "20091221";

        /// DES加密
        /// <param >待加密的字符串</param>
        /// <param >加密密钥,要求为8位</param>
        /// <returns>加密成功返回加密后的字符串,失败返回源串</returns>

        public string EncryptDES(string encryptString, string encryptKey)
        {
            try
            {
                byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));
                byte[] rgbIV = Keys;
                byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
                DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
                MemoryStream mStream = new MemoryStream();
                CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
                cStream.Write(inputByteArray, 0, inputByteArray.Length);
                cStream.FlushFinalBlock();
                return Convert.ToBase64String(mStream.ToArray());
            }
            catch
            {
                //return encryptString;
                return "Encrypt Failed!";
            }
        }

        /// DES解密
        /// <param >待解密的字符串</param>
        /// <param >解密密钥,要求为8位,和加密密钥相同</param>
        /// <returns>解密成功返回解密后的字符串,失败返源串</returns>

        public string DecryptDES(string decryptString, string decryptKey)
        {
            try
            {
                byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey);
                byte[] rgbIV = Keys;
                byte[] inputByteArray = Convert.FromBase64String(decryptString);
                DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
                MemoryStream mStream = new MemoryStream();
                CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
                cStream.Write(inputByteArray, 0, inputByteArray.Length);
                cStream.FlushFinalBlock();
                return Encoding.UTF8.GetString(mStream.ToArray());
            }
            catch
            {
                //return decryptString;
                return "Decrypt Failed!";
            }
        }

    }

//定义结束

在页面C_DES.cs中使用,页面中有控件

textBox1,//输入要加密的源串

textBox2,//显示加密后的串

textBox3,//显示解密后的串

button1 //加密按钮

button2 //解密按钮

代码

//代码开始

    public partial class C_DES : Form
    {
        DES mydes = new DES();
        string strIn = string.Empty;
        string strInEncrypt = string.Empty;
        string strOut = string.Empty;
        string strOutDecrypt = string.Empty;
        Encoding ed = Encoding.UTF8;
        byte[] bt = null;

        public C_DES()
        {
            InitializeComponent();
        }

      //按下加密时执行

        private void button1_Click(object sender, EventArgs e)
        {
            strIn = this.textBox1.Text.Trim();
            strInEncrypt = mydes.EncryptDES(strIn, mydes.KeyValue);
            bt = ed.GetBytes(strInEncrypt);
            strOut = Convert.ToBase64String(bt);
            this.textBox2.Text = strOut;

        }

     //按下解密时执行

        private void button2_Click(object sender, EventArgs e)
        {
            strOutDecrypt = this.textBox2.Text.Trim();
            bt = Convert.FromBase64String(strOutDecrypt);
            strOut = ed.GetString(bt);

            strIn = mydes.DecryptDES(strOut, mydes.KeyValue);
            this.textBox3.Text = strIn;

        }

    }

//代码结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值