通用

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Web;
using System.Web.Security;

namespace Common
{
    public class Utils
    {
        #region 产生随机数
        public static string GetRandomStr(bool _isnum, int _length)
        {
            var tempstr = _isnum ? "1234567890" : "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";
            var random = new Random(GetRandomSeed());
            var strRet = new StringBuilder();
            for (var i = 0; i < _length; i++)
            {
                var c = tempstr[random.Next(0, tempstr.Length)];
                strRet.Append(c);
            }
            return strRet.ToString();
        }
        /// <summary>
        /// 产生随机种子
        /// </summary>
        /// <returns></returns>
        public static int GetRandomSeed()
        {
            var bytes = new byte[4];
            var rng = new System.Security.Cryptography.RNGCryptoServiceProvider();
            rng.GetBytes(bytes);
            return BitConverter.ToInt32(bytes, 0);
        }

        #endregion

        #region 生成订单号
        /// <summary>
        /// 生成ORDERID
        /// </summary>       
        public static String GetOrderId()
        {
            var orderid = new StringBuilder(32);

            var dt = DateTime.Now;

            var rand = new Random(GetRandomSeed());

            orderid.Append(dt.ToString("yyyyMMddhhmmssfff"));

            for (int i = 0; i < 15; i++)
            {
                orderid.Append(rand.Next(0, 10));
            }

            return orderid.ToString();
        }
        #endregion

        #region 过滤html标签
        /// <summary>
        /// 过滤掉HTML标签
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static string NoHTML(string str)
        {
            str = Regex.Replace(str, @"(\<.[^\<]*\>)", " ", RegexOptions.IgnorePatternWhitespace | RegexOptions.IgnoreCase);
            str = Regex.Replace(str, @"(\<\/[^\<]*\>)", " ", RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace);
            return str;
        }
        #endregion

        #region 防止sql注入
        /// <summary>
        /// 过滤SQL语句,防止注入
        /// </summary>
        /// <param name="strSql"></param>
        /// <returns>0 - 没有注入, 1 - 有注入 </returns>
        public static int filterSql(string sSql)
        {
            int srcLen, decLen = 0;
            sSql = sSql.ToLower().Trim();
            srcLen = sSql.Length;
            sSql = sSql.Replace("exec", "");
            sSql = sSql.Replace("delete", "");
            sSql = sSql.Replace("master", "");
            sSql = sSql.Replace("truncate", "");
            sSql = sSql.Replace("declare", "");
            sSql = sSql.Replace("create", "");
            sSql = sSql.Replace("xp_", "no");
            decLen = sSql.Length;
            if (srcLen == decLen) return 0; else return 1;
        }

        #endregion

        #region MD5

        /// <summary>
        /// MD5加密
        /// </summary>
        /// <param name="instr"></param>
        /// <returns></returns>
        public static string MD5(string instr)
        {
            return FormsAuthentication.HashPasswordForStoringInConfigFile(instr, "md5").ToLower();
        }

        #endregion

        #region Time

        /// <summary>
        /// 时间梭
        /// </summary>
        /// <returns></returns>
        public static long TimeToShuttle(DateTime dateTime)
        {
            return (long)(dateTime - TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1))).TotalSeconds;
        }

        public static DateTime ShuttleToTime(long timestamp)
        {
            return TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)).AddSeconds(timestamp);
        }

        #endregion

        #region IP

        /// <summary>
        /// 获取服务器IP
        /// </summary>
        public static string GetServerIP()
        {
            return System.Web.HttpContext.Current.Request.ServerVariables.Get("Local_Addr").ToString();
        }

        /// <summary>
        /// 获取客户端IP
        /// </summary>
        /// <returns></returns>
        public static string GetIP()
        {
            try
            {
                HttpRequest request = System.Web.HttpContext.Current.Request;
                string result = request.ServerVariables["HTTP_X_FORWARDED_FOR"];
                if (null == result || result == String.Empty)
                {
                    result = request.ServerVariables["REMOTE_ADDR"];
                }
                else
                {
                    if (request.ServerVariables["HTTP_VIA"] != null)
                    {
                        result = request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString().Split(',')[0].Trim();
                    }
                }
                if (null == result || result == String.Empty)
                {
                    result = request.UserHostAddress;
                }

                return result;
            }
            catch
            {
                return "127.0.0.1";
            }
        }

        public static string GetIP(HttpRequest request)
        {
            try
            {
                var result = request.ServerVariables["HTTP_X_FORWARDED_FOR"];
                if (string.IsNullOrEmpty(result))
                {
                    result = request.ServerVariables["REMOTE_ADDR"];
                }
                else
                {
                    if (request.ServerVariables["HTTP_VIA"] != null)
                    {
                        result = request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString().Split(',')[0].Trim();
                    }
                }
                if (string.IsNullOrEmpty(result))
                {
                    result = request.UserHostAddress;
                }

                return result;
            }
            catch
            {
                return "127.0.0.1";
            }
        }
        #endregion

        #region Sha加密
        /// <summary>
        /// 取得输入字符串的SHA哈希值
        /// </summary>
        /// <param name="text">输入字符串</param>
        /// <param name="isQn">是否添加千牛域名,默认添加(true)</param>
        /// <returns>SHA哈希值</returns>
        public static string GetShaHash(string text, bool isYY = true)
        {
            using (SHA256 sha = new SHA256Managed())
            {
                if (isYY) text += GetMD5Hash("11joy.com");
                byte[] byt = Encoding.Default.GetBytes(text);
                byte[] bytHash = sha.ComputeHash(byt);
                sha.Clear();
                return BitConverter.ToString(bytHash).Replace("-", string.Empty).ToLower();
            }
        }

        public static string GetSHA1Hash(string text)
        {
            using (SHA1 sha = new SHA1Managed())
            {
                byte[] byt = Encoding.Default.GetBytes(text);
                byte[] bytHash = sha.ComputeHash(byt);
                sha.Clear();
                return BitConverter.ToString(bytHash).Replace("-", string.Empty).ToLower();
            }
        }
        #endregion

        #region MD5加密
        //MD5加密密码
        public static string GetMD5Hash(string test)
        {
            using (MD5 md5 = new MD5CryptoServiceProvider())
            {
                byte[] bytes = Encoding.Default.GetBytes(test);
                byte[] bytHash = md5.ComputeHash(bytes);
                md5.Clear();
                return BitConverter.ToString(bytHash).Replace("-", string.Empty).ToLower();
            }
        }
        public static string _MD5(string message)
        {
            try
            {
                System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create();
                string encoded = BitConverter.ToString(md5.ComputeHash(Encoding.Default.GetBytes(message))).Replace("-", "");
                return encoded.ToLower();
            }
            catch { }
            return string.Empty;
        }

        #endregion

        #region AES加解密
        /// <summary>
        /// AES加密
        /// </summary>
        /// <param name="content">需要加密的文字内容</param>
        /// <param name="password">加密密钥字符串</param>
        /// <param name="key">由密钥字符串生成的密钥,用于解密。</param>
        /// <returns>加密后的文字内容,当出现错误时返回string.Empty</returns>
        public static string EncryptAES(string content, string password, out byte[] key)
        {
            key = null;
            try
            {
                if (string.IsNullOrEmpty(content) || string.IsNullOrEmpty(password))
                {
                    return string.Empty;
                }

                //根据密钥字符串产生密钥
                SymmetricAlgorithm sa = Rijndael.Create();
                ICryptoTransform transform = sa.CreateEncryptor();
                key = Encoding.UTF8.GetBytes(password);
                key = transform.TransformFinalBlock(key, 0, key.Length);
                sa.Key = key;
                sa.Mode = CipherMode.ECB;
                sa.Padding = PaddingMode.Zeros;
                MemoryStream ms = new MemoryStream();
                CryptoStream cs = new CryptoStream(ms, sa.CreateEncryptor(), CryptoStreamMode.Write);
                byte[] byt = Encoding.Unicode.GetBytes(content);
                cs.Write(byt, 0, byt.Length);
                cs.FlushFinalBlock();
                cs.Close();
                return Convert.ToBase64String(ms.ToArray());
            }
            catch
            {
                return string.Empty;
            }
        }

        /// <summary>
        /// AES解密
        /// </summary>
        /// <param name="content">需要解密的文字内容</param>
        /// <param name="key">加密时由密钥字符串生成的密钥</param>
        /// <returns>解密后的文字内容,当出现错误时返回null</returns>
        public static string DecryptAES(string content, byte[] key)
        {
            try
            {
                if (string.IsNullOrEmpty(content))
                    return string.Empty;

                SymmetricAlgorithm sa = Rijndael.Create();
                sa.Key = key;
                sa.Mode = CipherMode.ECB;
                sa.Padding = PaddingMode.Zeros;
                ICryptoTransform ct = sa.CreateDecryptor();
                byte[] byt = Convert.FromBase64String(content);
                MemoryStream ms = new MemoryStream(byt);
                CryptoStream cs = new CryptoStream(ms, ct, CryptoStreamMode.Read);
                StreamReader sr = new StreamReader(cs, Encoding.Unicode);
                return sr.ReadToEnd();
            }
            catch
            {
                return string.Empty;
            }
        }
        #endregion

        #region DES加解密
        /// <summary>
        /// DES加密
        /// </summary>
        /// <param name="encryptString">加密字符串</param>
        /// <param name="encryptKey">密钥</param>
        /// <returns>加密后的文字内容,当出现错误时返回string.Empty</returns>
        /// <remarks>Des的密钥是64位的二进制,换成字符串的话只能是8个字符.</remarks>
        public static string EncryptDES(string encryptString, string encryptKey)
        {
            try
            {
                if (string.IsNullOrEmpty(encryptString) || string.IsNullOrEmpty(encryptKey))
                    return string.Empty;

                DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
                dCSP.Mode = CipherMode.ECB;
                byte[] rgbKey =
                    Encoding.UTF8.GetBytes(("00000000" + encryptKey).Substring(("00000000" + encryptKey).Length - 8, 8));
                byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
                MemoryStream mStream = new MemoryStream();
                CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbKey), CryptoStreamMode.Write);
                cStream.Write(inputByteArray, 0, inputByteArray.Length);
                cStream.FlushFinalBlock();

                return Convert.ToBase64String(mStream.ToArray());
            }
            catch
            {
                return string.Empty;
            }
        }

        /// <summary>
        /// DES解密
        /// </summary>
        /// <param name="decryptString">解密字符串</param>
        /// <param name="decryptKey">密钥</param>
        /// <returns>加密后的文字内容,当出现错误时返回string.Empty</returns>
        /// <remarks>Des的密钥是64位的二进制,换成字符串的话只能是8个字符.</remarks>
        public static string DecryptDES(string decryptString, string decryptKey)
        {
            if (string.IsNullOrEmpty(decryptString) || string.IsNullOrEmpty(decryptKey))
                return string.Empty;

            try
            {
                byte[] rgbKey =
                    Encoding.UTF8.GetBytes(("00000000" + decryptKey).Substring(("00000000" + decryptKey).Length - 8, 8));
                byte[] inputByteArray = Convert.FromBase64String(decryptString);
                DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
                DCSP.Mode = CipherMode.ECB;
                MemoryStream mStream = new MemoryStream();
                CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbKey), CryptoStreamMode.Write);
                cStream.Write(inputByteArray, 0, inputByteArray.Length);
                cStream.FlushFinalBlock();
                return Encoding.UTF8.GetString(mStream.ToArray());
            }
            catch
            {
                return string.Empty;
            }
        }
        #endregion

        #region TripleDES加解密
        /// <summary>
        /// 使用TripleDES加密
        /// </summary>
        /// <param name="content">需要加密的文字内容</param>
        /// <returns>加密后的文字内容,当出现错误时返回string.Empty</returns>
        public static string EncryptTripleDES(string content, string password)
        {
            try
            {
                if (string.IsNullOrEmpty(content) || string.IsNullOrEmpty(password))
                    return string.Empty;

                byte[] bytDesKey;   // 密钥(Key)
                byte[] bytDesIV;    // 初始化向量(IV)
                PasswordDeriveBytes pdb = new PasswordDeriveBytes(password, null);
                bytDesKey = pdb.GetBytes(24);
                bytDesIV = pdb.GetBytes(8);

                byte[] bInContent = (new System.Text.UnicodeEncoding()).GetBytes(content);

                MemoryStream memoryStream = new MemoryStream();
                TripleDESCryptoServiceProvider provider = new TripleDESCryptoServiceProvider();
                using (CryptoStream cryptoStream =
                    new CryptoStream(memoryStream, provider.CreateEncryptor(bytDesKey, bytDesIV), CryptoStreamMode.Write))
                {
                    cryptoStream.Write(bInContent, 0, bInContent.Length);
                    cryptoStream.FlushFinalBlock();
                    cryptoStream.Close();
                }
                return Convert.ToBase64String(memoryStream.ToArray());
            }
            catch
            {
                return string.Empty;
            }
        }

        /// <summary>
        /// 使用TripleDES解密
        /// </summary>
        /// <param name="content">需要解密的文字内容</param>
        /// <returns>解密后的文字内容,当出现错误时返回string.Empty</returns>
        public static string DecryptTripleDES(string content, string password)
        {
            try
            {
                if (string.IsNullOrEmpty(content) || string.IsNullOrEmpty(password))
                    return string.Empty;

                byte[] bytDesKey;   // 密钥(Key)
                byte[] bytDesIV;    // 初始化向量(IV)
                PasswordDeriveBytes pdb = new PasswordDeriveBytes(password, null);
                bytDesKey = pdb.GetBytes(24);
                bytDesIV = pdb.GetBytes(8);

                byte[] bInContent = Convert.FromBase64String(content);

                MemoryStream memoryStream = new MemoryStream();

                TripleDESCryptoServiceProvider provider = new TripleDESCryptoServiceProvider();
                using (CryptoStream cryptoStream
                    = new CryptoStream(memoryStream, provider.CreateDecryptor(bytDesKey, bytDesIV), CryptoStreamMode.Write))
                {
                    cryptoStream.Write(bInContent, 0, bInContent.Length);
                    cryptoStream.FlushFinalBlock();
                    cryptoStream.Close();
                }
                return (new System.Text.UnicodeEncoding()).GetString(memoryStream.ToArray());
            }
            catch
            {
                return string.Empty;
            }
        }

        #endregion

        #region RSA加解密
        private static string RSAPublicKey = System.Configuration.ConfigurationManager.AppSettings.Get("RSAPublicKey") ?? "<RSAKeyValue><Modulus>o276LmIN+yQrCnYAZlMMIin2EivihAYlSq7eXXqXe8/pA9FGs4Q6vogbJ00xhrUF3buCsb262A6cNSA8QcSewnUqsNy6QQQbN+Q3iXcpCrBO0tpAODItmDaAdk/Ys3gjCd1r9AYNEyJfh8kOUyI3SLfviOOHjZSOlFeQJatm0x8=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";
        private static string RSAPrivateKey = System.Configuration.ConfigurationManager.AppSettings.Get("RSAPrivateKey") ?? "<RSAKeyValue><Modulus>o276LmIN+yQrCnYAZlMMIin2EivihAYlSq7eXXqXe8/pA9FGs4Q6vogbJ00xhrUF3buCsb262A6cNSA8QcSewnUqsNy6QQQbN+Q3iXcpCrBO0tpAODItmDaAdk/Ys3gjCd1r9AYNEyJfh8kOUyI3SLfviOOHjZSOlFeQJatm0x8=</Modulus><Exponent>AQAB</Exponent><P>4qdyk7ykB41+70mLTujD1RU8Ts4Sj5uUWEdwvGC8Wf8/Lnqu6CZDmJtQILViudJgqkj+CA8B+8GSECBV75PSpw==</P><Q>uJgOA2Y+DaEpGdGOp9yXBeaaUEUbJe0q1lKcPStKxAwqwwtMMcSVdR6nxQxyrkEi5pcv87O5wjzxDCSQo4niyQ==</Q><DP>cyCM8YALbY6w4EjiCxXuiyi7Nmg0Q1/KbUD0gas9YRVm+Wv1thPhl/2kKMkZubujwDtNVbiR0FhVof1ayVOz1w==</DP><DQ>DPWX3kM6TgincwmUQ1KoQ6DJ6qK/Yi1BWaSZFW5JpHPaOLE9Wy0a9Qr+6kWSc4tdIOUyV6ChhPJ0Vc7nXKPciQ==</DQ><InverseQ>ZwPewyegyEJqYOkYh7IzdKTKe3CpG/F08XJ2NJgWfagWFIWK2KEsfpSNJUwNrTyxsYdT4BXeVZxQ5JmkwSff9Q==</InverseQ><D>Su8IvXiO4X3RUDAPedsM/qMPpIBDkPYCZi4sXV7mksmelHYBPTDdAFwGWyw9D37zbBlb0KPlxcdZHtCjYCJHCbRA7faSc2AHzeOQM52B125vaJ+3RI4mxS2mmtiLOiDqoRP3cvzNqqSpzoHQofrVCMGifDM1HmMK1iPCGfFIINk=</D></RSAKeyValue>";

        private static string RSAEmailPublicKey = System.Configuration.ConfigurationManager.AppSettings.Get("RSAEmailPublicKey") ?? "<RSAKeyValue><Modulus>0f218aTAcn4lGXcfp6IHL5mWrGbiPDT0Z2op5AQ2XdCuoMzts7u4Wm69ph+1vwXGj2ByIwZqM80ncG0YY1Hk+M0aWZrAy6JRQl6Ft3LI7Bw7qEtZlCrbCmxzl/IBb6hC3PhGbHmfiyrFx3TrX/Tg2Hu6u8E2Czuxx5p9gi54qec=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";
        private static string RSAEmailPrivateKey = System.Configuration.ConfigurationManager.AppSettings.Get("RSAEmailPrivateKey") ?? "<RSAKeyValue><Modulus>0f218aTAcn4lGXcfp6IHL5mWrGbiPDT0Z2op5AQ2XdCuoMzts7u4Wm69ph+1vwXGj2ByIwZqM80ncG0YY1Hk+M0aWZrAy6JRQl6Ft3LI7Bw7qEtZlCrbCmxzl/IBb6hC3PhGbHmfiyrFx3TrX/Tg2Hu6u8E2Czuxx5p9gi54qec=</Modulus><Exponent>AQAB</Exponent><P>6w+zxPGlwQpM1lfTu3+VmJjrORstlXYXBqsbnggRi2sjFzI1c1vWP9Cjzdfoe/gXJYXQq8fgPPWv2lqCOVtpHw==</P><Q>5LJPahMwYeuICS7q6LZSQvoVc2YsIs+avGwOwsGKrnzbxyXBk/tct2FjytneUjPsDUWxln620/YwP/oHG39+OQ==</Q><DP>rswzc637A81EDFStaA3dUefNa97xC+cQAm51kBQR7+pQ4uv8YXeWoEfnt6fqA14e4FFdNpDhCJPvHGIX2s1GIw==</DP><DQ>LxzgqUyMsg9wddvZftlYdv3H/37z5rP3/4sPO2XdqPaF3C/WAiNNRWXlxfs+Bpc1sMJDxGoURfQ4mmVqo2qPWQ==</DQ><InverseQ>JEiW5BuuA+8/dU+r6L8nDwAKT7vkBFfg2pbupv7zAgsax9bwWjqrxTLfswIPB+kkf4cPqYGtgt/depO+XSPU0g==</InverseQ><D>QN5EFzqSrIulQEGZSLp3x8+FSQqbNogRO+UCvcpDVSXC3C+R+mSx5VWyRiAjj7fkB6R+fa1cn1Xvqf45e2zv8xB9+mxbatIF10RU1V1S8wxaTTV3jE6bLgFbaQlkGm9LqLKQBD3idUSxjqIkNNhNIlnedH9uzw7rhcEEZyMqZdE=</D></RSAKeyValue>";

        public static string RSAHSPublicKey = System.Configuration.ConfigurationManager.AppSettings.Get("RSAHSPublicKey") ?? "<RSAKeyValue><Modulus>xz1OIhlbCcu9KdaCsjJn95R+GrcPZUMzOnYPoaltSY5TTx+LBDXV8soVrRCPMtLhxU78BXCEsf+nIRZF2aK63y6w1pdL5ahaMQ1ueL6RHcMuUS5ftvHjKnIpg2QLUTX9yBlq1yET6j0bBwF9fx6eNNClYEy+qsxSRtbIeRny2JcwH/Rp3CVHjXj6n8W95BtM6FAjV3PvOGwiv9juK4tGLNN/y28kcHraQuxQgc9J1o+TydrRf7xF5StCP4LQQRLmgdsp2tg1zl7DpzJIMm27uiUnd2OkcM5FBgojIdN8V7KTBt5nJr2sstA6PoIYTOrk75aAN3QGrekOeuLoCecvVw==</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";
        public static string RSAHSPrivateKey = System.Configuration.ConfigurationManager.AppSettings.Get("RSAHSPrivateKey") ?? "<RSAKeyValue><Modulus>xz1OIhlbCcu9KdaCsjJn95R+GrcPZUMzOnYPoaltSY5TTx+LBDXV8soVrRCPMtLhxU78BXCEsf+nIRZF2aK63y6w1pdL5ahaMQ1ueL6RHcMuUS5ftvHjKnIpg2QLUTX9yBlq1yET6j0bBwF9fx6eNNClYEy+qsxSRtbIeRny2JcwH/Rp3CVHjXj6n8W95BtM6FAjV3PvOGwiv9juK4tGLNN/y28kcHraQuxQgc9J1o+TydrRf7xF5StCP4LQQRLmgdsp2tg1zl7DpzJIMm27uiUnd2OkcM5FBgojIdN8V7KTBt5nJr2sstA6PoIYTOrk75aAN3QGrekOeuLoCecvVw==</Modulus><Exponent>AQAB</Exponent><P>85olBi4QHrrOWXHGQnG28O1UtKXTr4cAOmZ14PPNKLal4mJkyEMoPNCWkQmP78ZU2OwkC7wGx6ul7quVWGThq0xBXO0DRWTOJP6pBHlVgXZJ0PMzvJkzjUpapyiLepsftG/8PQ/TIFUodegNlaVLlj+MKW1ZrQpNtaFkwqmgAW8=</P><Q>0WEqj7HXl+P2PE4tEPRALsSSYjmAUEZkI+BUDsBAOprZtPIkf/yRzVvWFk6yGCMoNE/4J7KQuPqYIy44JnM7vWBhipbbTfYPN6Aov2Z03qB6bdGiCI/8xE9zfRhGkeCXkanypmq1G/PnVo6ag27pG1Ztc99lTa6j/3FQB3VM7Jk=</Q><DP>gnxiMrI/3kYQPGcuXO8OoHVwdyeQgahd3ep+YBYYIiPcLayo8YDPr+vHiz9FA5oIXv32vPZl51SxmGv+no/DNf+tz3oB040Qw05J+OSJgcR7+9oaL38c1yUp8/pK5EztqbiGs6qjW+Fhv+6iQDN/jqbRjGtPqtonEBC4qXE1DS8=</DP><DQ>moSXsVXwojJkrNqQnZtzplABK6X90MAx9Nv/jKdKfzV6BvRQBXfybdghZXMMMY34hKqjm0BHV4vwLL5WR+Hwq3Bua6WrEJzPXCDBEYdeJlHOKC914dXJF2L++smogs15bdE6tp+3KnrUNeelleuK8lbVDZdGno6Mjt4jzm09qLk=</DQ><InverseQ>MjutSSG9u26DKWxpIszYRMR4j+fKOwkOLYewJV0RgOHRMxIyngX6d8Bdpkfd1J1y3UCPA/uo2kgdDYPXo4X9oCkwChZHTijf8ol4ZQ4pyDhK9veCfhZ8Bw56K4yNJuU2g5rSXdDe4iVcAHontf7CwgAsXGHBsIFlWOW/+cdsC+8=</InverseQ><D>KcC5LQAvSeA+ZhQkE3/otcOSobqXKVtp0uiG4hQFaRLAdqZflaRKj7S10izUNYxn79dbjTBFPqAawB5QyQkHLFo2iOHv79LWA82Sxw74jkom3LBhMo+CUZTXCkfe70fnRRW+hBLUf5QKo+82A3vBH8RRw9qRYm2rGFlObcJ4V9cIOwenvQaR5tQ7B4Sq+IBQUUS2bj4TCFT6YXw464WgEuKEptYIzNa7RNu/8Ys+s5XcSLwXl/QiucsvB0F2LA62Lga6MEvkNVx64RCI6mB9hcF7Ql/k2LdLGfWAtlp8vJbvSf/vkhko06CV4PnYOGRGYpM0IoeKV+21+NUhQ+rp4Q==</D></RSAKeyValue>";

        public static void RSAKey()
        {
            using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(2048))
            {
                string rsaPrivateKey = RSA.ToXmlString(true);
                string rsaPublicKey = RSA.ToXmlString(false);
            }
        }

        public static string RSAEncrypt(string str)
        {
            return RSAEncrypt(str, RSAPublicKey);
        }

        public static string RSAEncrypt(string str, string publicKey)
        {
            if (str.Length == 0)
            {
                return string.Empty;
            }
            Encoding encoder = Encoding.UTF8;
            byte[] strByte = encoder.GetBytes(str);
            using (RSACryptoServiceProvider privateRsa = new RSACryptoServiceProvider())
            {
                privateRsa.FromXmlString(publicKey);

                byte[] encryptStrByte = privateRsa.Encrypt(strByte, false);
                return Convert.ToBase64String(encryptStrByte);
            }
        }

        public static string RSADecrypt(string str)
        {
            return RSADecrypt(str, RSAPrivateKey);
        }

        public static string RSADecrypt(string str, string privateKey)
        {
            if (str.Length == 0)
            {
                return string.Empty;
            }
            Encoding encoder = Encoding.UTF8;
            byte[] strByte = Convert.FromBase64String(str);
            using (RSACryptoServiceProvider privateRsa = new RSACryptoServiceProvider())
            {
                privateRsa.FromXmlString(privateKey);

                byte[] decryptStrByte = privateRsa.Decrypt(strByte, false);
                return encoder.GetString(decryptStrByte);
            }
        }
        #endregion


    }
}

 

posted @ 2016-02-17 16:51  汪汪汪~~  阅读(597)  评论(0编辑  收藏  举报