您的位置:首页 > 理论基础 > 计算机网络

中转Http请求

2016-04-08 09:37 323 查看
应用场景:公司与外部公司数据对接,外部公司需申请指定IP访问。而本地ip经常变动,无法因ip变动时刻向外部公司申请绑定IP,给本地程序调试带来麻烦,故只能在指定ip服务器上搭建请求中转http请求;

public class EncryptHelper
{
/// <summary>
/// MD5
/// </summary>
/// <param name="str"></param>
/// <param name="code"></param>
/// <returns></returns>
public static string MD5(string str, int code)
{
if (code == 16) //16位MD5加密(取32位加密的9~25字符)
{
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower().Substring(8, 16);
}
if (code == 32) //32位加密
{
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower();
}
return "00000000000000000000000000000000";

}

/// <summary>
/// AES加密函数(128位) 加密模式:AES/CBC/PKCS5Padding  加密初始化向量:长度为  16 的空字节数组
/// </summary>
/// <param name="toEncrypt"></param>
/// <returns></returns>
public static string Encrypt(string toEncrypt,string key)
{
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);

RijndaelManaged rDel = new RijndaelManaged();
rDel.IV = new byte[16];
rDel.Key = keyArray;
rDel.Mode = CipherMode.CBC;
rDel.Padding = PaddingMode.PKCS7;

ICryptoTransform cTransform = rDel.CreateEncryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);

return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}

/// <summary>
/// AES解密函数(128位)
/// </summary>
/// <param name="toDecrypt"></param>
/// <returns></returns>
public static string Decrypt(string toDecrypt, string key)
{
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
byte[] toEncryptArray = Convert.FromBase64String(toDecrypt);

RijndaelManaged rDel = new RijndaelManaged();
rDel.IV = new byte[16];
rDel.Key = keyArray;
rDel.Mode = CipherMode.CBC;
rDel.Padding = PaddingMode.PKCS7;

ICryptoTransform cTransform = rDel.CreateDecryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);

return UTF8Encoding.UTF8.GetString(resultArray);
}

public static string Encrypt2(string toEncrypt)
{
StringBuilder sb = new StringBuilder();
int asc = 0;
foreach (char c in toEncrypt)
{
asc = (int)c;
sb.Append(Convert.ToString(asc, 8) + "9");
}

return sb.ToString();
}

public static string Decrypt2(string toEncrypt)
{
string[] ss = toEncrypt.Split(new char[] { '9' }, StringSplitOptions.RemoveEmptyEntries);
StringBuilder sb = new StringBuilder();
foreach (string s in ss)
{
sb.Append(Convert.ToChar(Convert.ToInt32(s, 8)).ToString());
}

return sb.ToString();
}

/// <summary>
/// GZip解压
/// </summary>
/// <param name="inputStr"></param>
/// <returns></returns>
public static string Decompress(string inputStr)
{
byte[] bs = Convert.FromBase64String(inputStr);
MemoryStream ms = new MemoryStream(bs);
GZipStream zipStream = new GZipStream(ms, CompressionMode.Decompress);

string result = "";
using (StreamReader sr = new StreamReader(zipStream))
{
result = sr.ReadToEnd();
}

zipStream.Close();
ms.Dispose();
ms.Close();

return result;
}

/// <summary>
/// GZip压缩
/// </summary>
/// <param name="inputStr"></param>
/// <returns></returns>
public static byte[] Compress(string inputStr)
{
//if (string.IsNullOrEmpty(inputStr))
//{
//    return "";
//}

byte[] bs = Encoding.UTF8.GetBytes(inputStr);

MemoryStream ms = new MemoryStream();
using (GZipStream zipStream = new GZipStream(ms, CompressionMode.Compress, true))
{
zipStream.Write(bs, 0, bs.Length);
}

return ms.ToArray();

//byte[] res = ms.ToArray();

//ms.Dispose();
//ms.Close();
//return Convert.ToBase64String(res);
}

}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: