private static string key = "VSQAdmin";//密文 加密解密是都需要密文且保持一致 private static string iv = "VSQAdmin";//加密解密时key 、 iv 中传入的key、iv值一致 /// <summary> /// 请求方法 /// </summary> /// <param name="info"></param> /// <returns></returns> public static string Route(ChangpaostartendRequestModel info) { try { string host = string.Empty; host = string.Format("{0}", "接口地址"); string errorMessage = string.Empty; if (info == null) { errorMessage = "请求参数错误!"; } info.appId = "C0BE88DC14F99A694F7A2AAF971B7C6092B5DDBA69ECFA13"; string dataJson = JsonConvert.SerializeObject(info, null, new Newtonsoft.Json.JsonSerializerSettings()); string datainfo = Des(dataJson); ServicePointManager.ServerCertificateValidationCallback = (RemoteCertificateValidationCallback)Delegate.Combine(ServicePointManager.ServerCertificateValidationCallback, new RemoteCertificateValidationCallback(ValidateServerCertificate)); ServicePointManager.Expect100Continue = false; ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; Encoding encoding = Encoding.UTF8; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host); request.Method = WebRequestMethods.Http.Post; request.ContentType = "application/json;charset=utf-8"; byte[] buffer = encoding.GetBytes(datainfo); request.ContentLength = buffer.Length; request.GetRequestStream().Write(buffer, 0, buffer.Length); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); string result = reader.ReadToEnd(); string testbase = DecryptString(result); return testbase; } catch (Exception e) { ExceptionService.Current.Handle(e); return string.Format("Error:{0}!", e.Message); } } /// <summary> /// Des解密 /// </summary> /// <param name="pToDecrypt"></param> /// <returns></returns> public static string DecryptString(string pToDecrypt) { DESCryptoServiceProvider des = new DESCryptoServiceProvider(); byte[] inputByteArray = new byte[pToDecrypt.Length / 2]; for (int x = 0; x < pToDecrypt.Length / 2; x++) { int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16)); inputByteArray[x] = (byte)i; } des.Key = UTF8Encoding.UTF8.GetBytes(key);//***************key与加密时的Key保持一致 des.IV = UTF8Encoding.UTF8.GetBytes(iv);//*****************skey与加密时的IV保持一致 MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write); cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); StringBuilder ret = new StringBuilder(); return Encoding.UTF8.GetString(ms.ToArray()); } /// <summary> /// Des加密 /// </summary> /// <param name="encryptString"></param> /// <returns></returns> public static string Des(string encryptString) { DESCryptoServiceProvider des = new DESCryptoServiceProvider(); byte[] sor = Encoding.UTF8.GetBytes(encryptString); //传入key、iv des.Key = UTF8Encoding.UTF8.GetBytes(key); des.IV = UTF8Encoding.UTF8.GetBytes(iv); MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write); cs.Write(sor, 0, sor.Length); cs.FlushFinalBlock(); StringBuilder sb = new StringBuilder(); foreach (byte b in ms.ToArray()) { sb.AppendFormat("{0:X2}", b); } return sb.ToString(); } private static bool ValidateServerCertificate(object sender, System.Security.Cryptography.X509Certificates.X509Certificate cert, X509Chain chain, SslPolicyErrors error) { //为了通过证书验证,总是返回true return true; }