3DES加密

最近与别的系统做短信发送的对接,往其他系统通过post方式发送时,需先对数据进行3DES加密,再通过BASE64位编码,转换成正确字符串后发送过去。

在网上搜索到两个加密与解密的方法:

/// <summary>
        /// 加密
        /// </summary>
        /// <param name="a_strString"></param>
        /// <param name="a_strKey"></param>
        /// <returns></returns>
        public static string Encrypt3DES(string a_strString, string a_strKey)
        {
            TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();
            
            byte[] b=ASCIIEncoding.ASCII.GetBytes(a_strKey);
            DES.Key = ASCIIEncoding.ASCII.GetBytes(a_strKey);
            DES.Mode = CipherMode.ECB;
            ICryptoTransform DESEncrypt = DES.CreateEncryptor();
            byte[] Buffer = ASCIIEncoding.ASCII.GetBytes(a_strString);
            return Convert.ToBase64String(DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
        }

        /// <summary>
        /// 解密
        /// </summary>
        /// <param name="a_strString"></param>
        /// <param name="a_strKey"></param>
        /// <returns></returns>
        public static string Decrypt3DES(string a_strString, string a_strKey)
        {
            TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();
            DES.Key = ASCIIEncoding.ASCII.GetBytes(a_strKey);
            DES.Mode = CipherMode.ECB;
            DES.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
            ICryptoTransform DESDecrypt = DES.CreateDecryptor();
            string result = "";
            try
            {
                byte[] Buffer = Convert.FromBase64String(a_strString);
                result = ASCIIEncoding.ASCII.GetString(DESDecrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
            }
            catch (Exception e)
            {

            }
            return result;
        }

 

在具体使用过程中,对方提供的密钥是经过BASE64位编码的字符串,在调用这两个方法时,需先先把密钥转换成普通字符串,再调用加密、解密方法。

具体代码如下:

string strMiyao = txtmiyao.Text.Trim();//得到密钥
            //密钥解密
            byte[] bytes = Convert.FromBase64String(strMiyao);
            string stryao = Encoding.Default.GetString(bytes);
            string strdaijiemi = txtdaijiemi.Text.Trim();//待加密字符串
            txtjiemihou.Text = Decrypt3DES(strdaijiemi, stryao);//把加密后字符串赋值到文本框中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值