中转Http请求
2016-04-08 09:37
323 查看
应用场景:公司与外部公司数据对接,外部公司需申请指定IP访问。而本地ip经常变动,无法因ip变动时刻向外部公司申请绑定IP,给本地程序调试带来麻烦,故只能在指定ip服务器上搭建请求中转http请求;
View Code
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
相关文章推荐
- JAVA Socket 底层是怎样基于TCP/IP 实现的
- AndroidHttp通信 HTTP Client与HttpURLConnection的区别
- 网络层概述.虚电路网络和数据报网络
- 详解HttpURLConnection
- 什么是 HTTPS
- http-live-streaming之文档
- HTTP 请求方式: GET和POST的比较
- Nginx深入详解之多进程网络模型
- 专家建议弹幕“实名制”,混A站B站的你们方不方?
- 网络编程学习——UDP(一)
- https下本地js弹出框不起作用
- httpclient 4.0 get遇到302重定向后会自动跳转
- 执行httpclient.execute()方法 java程序卡住不动 无法继续运行
- ios中的网络请求
- VIEWGOOD(远古)广电行业应用之网络电视台
- https 流程及其配置方式
- 移动APP存重大安全隐患,用户数据未启用HTTPS加密
- https、SSL与数字证书介绍
- 让你的Fiddler支持HTTP隧道
- TCP/IP协议栈系统参数 [COPY]