您的位置:首页 > 其它

通用

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

  • 点赞
  • 收藏
  • 分享
  • 文章举报
aiuyuu628048 发布了0 篇原创文章 · 获赞 0 · 访问量 422 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: