首页 > 编程语言 > 详细

C# 加解密算法

时间:2016-03-18 15:56:01      阅读:213      评论:0      收藏:0      [点我收藏+]

key 是八位长的字符串

DES加解密

 #region Des 加解密

        public static string DesEncrypt(string encryptStr, string key)
        {
            try
            {
                var inputArry = Encoding.Default.GetBytes(encryptStr);
                var byKey = Encoding.ASCII.GetBytes(key);
                var byIv = Encoding.ASCII.GetBytes(key);
                var ms = new MemoryStream();
                using (var cryptoProvider = new DESCryptoServiceProvider())
                {
                    using (var cs = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIv), CryptoStreamMode.Write))
                    {
                        cs.Write(inputArry, 0, inputArry.Length);
                        cs.FlushFinalBlock();
                        cs.Close();
                    }
                }

                var str = Convert.ToBase64String(ms.ToArray());
                ms.Close();
                return str;
            }
            catch (Exception)
            {
                return encryptStr;
            }

        }

        public static string DesDecrypt(string decryptStr, string key)
        {
            try
            {
                var inputArry = Convert.FromBase64String(decryptStr);
                var byKey = Encoding.Default.GetBytes(key);
                var byIv = Encoding.Default.GetBytes(key);
                var ms = new MemoryStream();
                using (var cryptProvider = new DESCryptoServiceProvider())
                {
                    using (var cs = new CryptoStream(ms, cryptProvider.CreateDecryptor(byKey, byIv), CryptoStreamMode.Write))
                    {
                        cs.Write(inputArry, 0, inputArry.Length);
                        cs.FlushFinalBlock();
                        cs.Close();
                    }
                }

                var str = Encoding.Default.GetString(ms.ToArray());
                ms.Close();
                return str;
            }
            catch (Exception)
            {
                return decryptStr;
            }

        }

        #endregion

3Des加解密

 

#region 3DES 加解密

        public static string Encrypt3Des(string encryStr, string key)
        {
            try
            {
                var inputArry = Encoding.Default.GetBytes(encryStr);
                var hashmd5 = new MD5CryptoServiceProvider();
                var byKey = hashmd5.ComputeHash(Encoding.Default.GetBytes(key));
                var byIv = byKey;
                var ms = new MemoryStream();
                using (var tDescryptProvider = new TripleDESCryptoServiceProvider())
                {
                    tDescryptProvider.Mode = CipherMode.ECB;
                    using (var cs = new CryptoStream(ms, tDescryptProvider.CreateEncryptor(byKey, byIv), CryptoStreamMode.Write))
                    {
                        cs.Write(inputArry, 0, inputArry.Length);
                        cs.FlushFinalBlock();
                        cs.Close();
                    }
                }

                var str = Convert.ToBase64String(ms.ToArray());
                ms.Close();
                return str;
            }
            catch (Exception)
            {
                return encryStr;
            }

        }

        public static string Decrypt3Des(string decryStr, string key)
        {
            try
            {
                var inputArry = Convert.FromBase64String(decryStr);
                var hashmd5 = new MD5CryptoServiceProvider();
                var byKey = hashmd5.ComputeHash(Encoding.Default.GetBytes(key));
                var byIv = byKey;
                var ms = new MemoryStream();
                using (var tDescryptProvider = new TripleDESCryptoServiceProvider())
                {
                    tDescryptProvider.Mode = CipherMode.ECB;
                    using (var cs = new CryptoStream(ms, tDescryptProvider.CreateDecryptor(byKey, byIv), CryptoStreamMode.Write))
                    {
                        cs.Write(inputArry, 0, inputArry.Length);
                        cs.FlushFinalBlock();
                        cs.Close();
                    }
                }

                var str = Encoding.Default.GetString(ms.ToArray());
                ms.Close();
                return str;
            }
            catch (Exception)
            {
                return decryStr;
            }
        }


        #endregion

 

C# 加解密算法

原文:http://www.cnblogs.com/qiufengke/p/5292359.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!