码迷,mamicode.com
首页 > Windows程序 > 详细

c# AES加密,解密

时间:2015-11-03 12:23:36      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:

转载:http://www.cnblogs.com/kevin-top/archive/2010/07/01/1769351.html

 

using System;
using System.Text;
using System.Security.Cryptography;
using System.IO;

namespace MyCryptography
{
    /// <summary>
    /// DES加密解密
    /// </summary>
    public class DES
    {
        /// <summary>
        /// 获取密钥
        /// </summary>
        private static string Key
        {
            get { return @"P@+#wG+Z"; }
        }

        /// <summary>
        /// 获取向量
        /// </summary>
        private static string IV
        {
            get { return @"L%n67}G\Mk@k%:~Y"; }
        }

        /// <summary>
        /// DES加密
        /// </summary>
        /// <param name="plainStr">明文字符串</param>
        /// <returns>密文</returns>
        public static string DESEncrypt(string plainStr)
        {
            byte[] bKey = Encoding.UTF8.GetBytes(Key);
            byte[] bIV = Encoding.UTF8.GetBytes(IV);
            byte[] byteArray = Encoding.UTF8.GetBytes(plainStr);

            string encrypt = null;
            DESCryptoServiceProvider des = new DESCryptoServiceProvider();
            try
            {
                using (MemoryStream mStream = new MemoryStream())
                {
                    using (CryptoStream cStream = new CryptoStream(mStream, des.CreateEncryptor(bKey, bIV), CryptoStreamMode.Write))
                    {
                        cStream.Write(byteArray, 0, byteArray.Length);
                        cStream.FlushFinalBlock();
                        encrypt = Convert.ToBase64String(mStream.ToArray());
                    }
                }
            }
            catch { }
            des.Clear();

            return encrypt;
        }

        /// <summary>
        /// DES解密
        /// </summary>
        /// <param name="encryptStr">密文字符串</param>
        /// <returns>明文</returns>
        public static string DESDecrypt(string encryptStr)
        {
            byte[] bKey = Encoding.UTF8.GetBytes(Key);
            byte[] bIV = Encoding.UTF8.GetBytes(IV);
            byte[] byteArray = Convert.FromBase64String(encryptStr);

            string decrypt = null;            DESCryptoServiceProvider des = new DESCryptoServiceProvider();            try            {                using (MemoryStream mStream = new MemoryStream())                {                    using (CryptoStream cStream = new CryptoStream(mStream, des.CreateDecryptor(bKey, bIV), CryptoStreamMode.Write))                    {                        cStream.Write(byteArray, 0, byteArray.Length);                        cStream.FlushFinalBlock();                        decrypt = Encoding.UTF8.GetString(mStream.ToArray());                    }                }            }            catch { }            des.Clear();            return decrypt;        }    }    /// <summary>    /// AES加密解密    /// </summary>    public class AES    {        /// <summary>        /// 获取密钥        /// </summary>        private static string Key        {            get { return @")O[NB]6,YF}+efcaj{+oESb9d8>Z‘e9M"; }        }        /// <summary>        /// 获取向量        /// </summary>        private static string IV        {            get { return @"L+\~f4,Ir)b$=pkf"; }        }        /// <summary>        /// AES加密        /// </summary>        /// <param name="plainStr">明文字符串</param>        /// <returns>密文</returns>        public static string AESEncrypt(string plainStr)        {            byte[] bKey = Encoding.UTF8.GetBytes(Key);            byte[] bIV = Encoding.UTF8.GetBytes(IV);            byte[] byteArray = Encoding.UTF8.GetBytes(plainStr);            string encrypt = null;            Rijndael aes = Rijndael.Create();            try            {                using (MemoryStream mStream = new MemoryStream())                {                    using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateEncryptor(bKey, bIV), CryptoStreamMode.Write))                    {                        cStream.Write(byteArray, 0, byteArray.Length);                        cStream.FlushFinalBlock();                        encrypt = Convert.ToBase64String(mStream.ToArray());                    }                }            }            catch { }            aes.Clear();            return encrypt;        }        /// <summary>        /// AES加密        /// </summary>        /// <param name="plainStr">明文字符串</param>        /// <param name="returnNull">加密失败时是否返回 null,false 返回 String.Empty</param>        /// <returns>密文</returns>        public static string AESEncrypt(string plainStr, bool returnNull)        {            string encrypt = AESEncrypt(plainStr);            return returnNull ? encrypt : (encrypt == null ? String.Empty : encrypt);        }        /// <summary>        /// AES解密        /// </summary>        /// <param name="encryptStr">密文字符串</param>        /// <returns>明文</returns>        public static string AESDecrypt(string encryptStr)        {            byte[] bKey = Encoding.UTF8.GetBytes(Key);            byte[] bIV = Encoding.UTF8.GetBytes(IV);            byte[] byteArray = Convert.FromBase64String(encryptStr);            string decrypt = null;            Rijndael aes = Rijndael.Create();            try            {                using (MemoryStream mStream = new MemoryStream())                {                    using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateDecryptor(bKey, bIV), CryptoStreamMode.Write))                    {                        cStream.Write(byteArray, 0, byteArray.Length);                        cStream.FlushFinalBlock();                        decrypt = Encoding.UTF8.GetString(mStream.ToArray());                    }                }            }            catch { }            aes.Clear();            return decrypt;        }        /// <summary>        /// AES解密        /// </summary>        /// <param name="encryptStr">密文字符串</param>        /// <param name="returnNull">解密失败时是否返回 null,false 返回 String.Empty</param>        /// <returns>明文</returns>        public static string AESDecrypt(string encryptStr, bool returnNull)        {            string decrypt = AESDecrypt(encryptStr);            return returnNull ? decrypt : (decrypt == null ? String.Empty : decrypt);        }    }}

c# AES加密,解密

标签:

原文地址:http://www.cnblogs.com/SkyflyBird/p/4932699.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!