asp.net&C#各种加密码解密



asp.net&C#各种加密码解密

 <pre class="csharp" name="code"> #region DES加密解密
        /// <summary>  
        /// DES加密算法必须使用Base64的Byte对象  
        /// </summary>  
        /// <param name="data">待加密的字符数据</param>  
        /// <param name="key">密匙,长度必须为64位(byte[8]))</param>  
        /// <param name="iv">iv向量,长度必须为64位(byte[8])</param>  
        /// <returns>加密后的字符</returns>  
        public string EnDES(string data, byte[] key, byte[] iv)
        {
            DES des = DES.Create();
            //这行代码很重要,需要根据不同的字符串选择不同的转换格式  
            byte[] tmp = Encoding.Unicode.GetBytes(data);
            byte[] encryptoData;
            ICryptoTransform encryptor = des.CreateEncryptor(key, iv);
            using (MemoryStream memoryStream = new MemoryStream())
            {
                using (CryptoStream cs = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write))
                {
                    using (StreamWriter writer = new StreamWriter(cs))
                    {
                        writer.Write(data);
                        writer.Flush();
                        writer.Dispose();

                    }
                }
                encryptoData = memoryStream.ToArray();
            }
            des.Dispose();
            return Convert.ToBase64String(encryptoData);
        }
        /// <summary>  
        /// DES解密算法  
        /// </summary>  
        /// <param name="data">待加密的字符数据</param>  
        /// <param name="key">密匙,长度必须为64位(byte[8]))</param>  
        /// <param name="iv">iv向量,长度必须为64位(byte[8])</param>  
        /// <returns>加密后的字符</returns>  
        public string DeDES(string data, byte[] key, byte[] iv)
        {
            string resultData = string.Empty;
            //这行代码很重要 
            byte[] temData = Convert.FromBase64String(data);//转换的格式挺重要
            DES des = DES.Create();
            ICryptoTransform decryptor = des.CreateDecryptor(key, iv);
            using (MemoryStream memoryStream = new MemoryStream(temData))
            {
                CryptoStream cs = new CryptoStream(memoryStream, decryptor, CryptoStreamMode.Read);
                StreamReader read = new StreamReader(cs);
                resultData = read.ReadLine();
                read.Dispose();

            }
            des.Dispose();
            return resultData;
        }
        #endregion

        #region TripleDES加密解密
        /// <summary>  
        /// TripleDES加密  
        /// </summary>  
        /// <param name="data">待加密的字符数据</param>  
        /// <param name="key">密匙,长度可以为:128位(byte[16]),192位(byte[24])</param>  
        /// <param name="iv">iv向量,长度必须为64位(byte[8])</param>  
        /// <returns>加密后的字符</returns>  
        public string EnTripleDES(string data, byte[] key, byte[] iv)
        {
            byte[] tmp;
            byte[] tmpData = Encoding.Unicode.GetBytes(data);
            TripleDES tripleDes = TripleDES.Create();
            ICryptoTransform encryptor = tripleDes.CreateEncryptor(key, iv);
            using (MemoryStream ms = new MemoryStream())
            {
                using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
                {
                    StreamWriter writer = new StreamWriter(cs);
                    writer.Write(data);
                    writer.Flush();//这句很重要,在对流操作结束后必须用这句话强制将缓冲区中的数据全部写入到目标对象中
                    writer.Dispose();

                }
                tmp = ms.ToArray();
            }
            tripleDes.Dispose();
            return Convert.ToBase64String(tmp);
        }
        /// <summary>  
        /// TripleDES解密  
        /// </summary>  
        /// <param name="data">待加密的字符数据</param>  
        /// <param name="key">密匙,长度可以为:128位(byte[16]),192位(byte[24])</param>  
        /// <param name="iv">iv向量,长度必须为64位(byte[8])</param>  
        /// <returns>加密后的字符</returns>  
        public string DeTripleDES(string data, byte[] key, byte[] iv)
        {
            byte[] tmp = Convert.FromBase64String(data);
            string result = string.Empty;
            TripleDES tripleDES = TripleDES.Create();
            ICryptoTransform decryptor = tripleDES.CreateDecryptor(key, iv);
            using (MemoryStream ms = new MemoryStream(tmp))
            {
                using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read))
                {
                    StreamReader reader = new StreamReader(cs);
                    result = reader.ReadLine();
                    reader.Dispose();

                }
            }
            tripleDES.Dispose();
            return result;
        }
        #endregion

        #region AES加密解密

        /// <summary>  
        /// AES加密  
        /// </summary>  
        /// <param name="data">待加密的字符数据</param>  
        /// <param name="key">密匙,长度可以为:128位(byte[16]),192位(byte[24]),256位(byte[32])</param>  
        /// <param name="iv">iv向量,长度必须为128位(byte[16])</param>  
        /// <returns>加密后的字符</returns>  
        public string EnAES(string data, byte[] key, byte[] iv)
        {
            Aes aes = Aes.Create();
            byte[] tmp;
            ICryptoTransform encryptor = aes.CreateEncryptor(key, iv);
            using (MemoryStream ms = new MemoryStream())
            {
                using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
                {
                    StreamWriter writer = new StreamWriter(cs);
                    writer.Write(data);
                    writer.Flush();
                    writer.Dispose();

                }
                tmp = ms.ToArray();
            }
            aes.Dispose();
            return Convert.ToBase64String(tmp);
        }
        /// <summary>  
        /// AES解密  
        /// </summary>  
        /// <param name="data">待加密的字符数据</param>  
        /// <param name="key">密匙,长度可以为:128位(byte[16]),192位(byte[24]),256位(byte[32])</param>  
        /// <param name="iv">iv向量,长度必须为128位(byte[16])</param>  
        /// <returns>加密后的字符</returns>  
        public string DeAES(string data, byte[] key, byte[] iv)
        {
            byte[] tmp = Convert.FromBase64String(data);
            string result = string.Empty;
            Aes aes = Aes.Create();
            ICryptoTransform decryptor = aes.CreateDecryptor(key, iv);
            using (MemoryStream ms = new MemoryStream(tmp))
            {
                using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read))
                {
                    StreamReader reader = new StreamReader(cs);
                    result = reader.ReadLine();
                    reader.Dispose();
                }
            }
            aes.Dispose();
            return result;
        }

        #endregion

        #region Rijndael加密解密
        /// <summary>  
        /// Rijndael加密  
        /// </summary>  
        /// <param name="data">需要加密的字符数据</param>  
        /// <param name="key">密匙,长度可以为:64位(byte[8]),128位(byte[16]),192位(byte[24]),256位(byte[32])</param>  
        /// <param name="iv">iv向量,长度为128(byte[16])</param>  
        /// <returns>加密后的字符</returns>  
        public string EnRijndael(string data, byte[] key, byte[] iv)
        {
            Rijndael rijndeal = Rijndael.Create();
            byte[] tmp;
            ICryptoTransform encryptor = rijndeal.CreateEncryptor(key, iv);
            using (MemoryStream ms = new MemoryStream())
            {
                using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
                {
                    StreamWriter writer = new StreamWriter(cs);
                    writer.Write(data);
                    writer.Dispose();
                }
                tmp = ms.ToArray();
            }
            rijndeal.Dispose();
            return Convert.ToBase64String(tmp);
        }

        public string DeRijndael(string data, byte[] key, byte[] iv)
        {
            byte[] tmp = Convert.FromBase64String(data);
            string result = string.Empty;
            Rijndael rijndael = Rijndael.Create();
            ICryptoTransform decryptor = rijndael.CreateDecryptor(key, iv);
            using (MemoryStream ms = new MemoryStream(tmp))
            {
                using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read))
                {
                    StreamReader reader = new StreamReader(cs);
                    result = reader.ReadLine();
                    reader.Dispose();
                }
            }
            return result;
        }

        #endregion



                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值