通用
2020-02-02 09:40
162 查看
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 } }
转载于:https://www.cnblogs.com/shuajing/p/5195892.html
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- LINQ TO SQL学习笔记(3)_解决通用基类的循环引用问题
- Winform开发框架之通用人员信息管理
- 通过中国天气网的通用接口查询天气
- windows(32bit&64bit)和linux下通用的GetFile函数
- 使用Winsock编写IPv4/IPv6通用程序
- Shell 命令习惯用法[0] --通用
- web开发----jsp中通用模版的引用 include的用法
- 用DapperExtensions和反射来实现一个通用搜索
- 一个通用的分页查询语句
- 根据jquery.validate.js写的一个通用的form表单校验插件
- 用MongoDB数据库来管理办公系统中文档型的表单和信息——通用流程化应用审批单设计思路(二,续)
- Openstack_通用模块_Oslo_vmware 创建 vSS PortGroup
- WTL 通用控件的封装类
- 【C#|.NET】从细节出发(一) 通用接口 aop dto 相关
- grub4dos通用菜单及相关工具包
- 打造炫酷通用的ViewPager指示器 - Adapter模式适配所有
- VC通用控件自适应屏幕类
- Delphi ListView快速操作通用实现
- 15 个 Android 通用流行框架大全