加密解密随记
private void demo(HttpContext context) { string key = "xxxxx";//key值
string body="xxxx";
try { //body加密 string body = Decrypt.Encrypt3DESToBase64(body, key); //sign加密 string sign = Decrypt.sign("xxxx"); string str = "{ "sign": "" + sign + "", "body": "" + body +"" }"; string paraUrlCoded = System.Web.HttpUtility.UrlEncode("json"); paraUrlCoded += "=" + System.Web.HttpUtility.UrlEncode(str); // 第三方接口获取数据 //拼接URL string serviceUrl = "xxxxxx";//第三方接口 HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl); //post请求 myRequest.Method = "POST"; //utf-8编码 byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(paraUrlCoded); myRequest.ContentLength = buf.Length; myRequest.Timeout = 5000; //指定为json否则会出错 myRequest.ContentType = "application/x-www-form-urlencoded"; myRequest.MaximumAutomaticRedirections = 1; myRequest.AllowAutoRedirect = true; Stream newStream = myRequest.GetRequestStream(); newStream.Write(buf, 0, buf.Length); newStream.Close(); //获得接口返回值 HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse(); StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8); string strResult = reader.ReadToEnd(); reader.Close(); myResponse.Close(); JObject jo = (JObject)JsonConvert.DeserializeObject(strResult); string zone = jo["body"].ToString(); //body解密 string bodyDecrypt = Encrypt.Decrypt3DESFromBase64(zone, key); context.Response.Write(bodyDecrypt); return; } catch (Exception ex) { string str = "{ " + ex + ",失败 }"; context.Response.Write(str); return; } }
public class Decrypt { public static string Encrypt3DESToBase64(string strEncrypt, string strKey) { return ToBase64(Encrypt3DES(Encoding.UTF8.GetBytes(strEncrypt), strKey)); } public static byte[] Encrypt3DES(byte[] arrEncrypt, string strKey) { ICryptoTransform DESEncrypt = null; try { TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider(); DES.Key = ASCIIEncoding.ASCII.GetBytes(strKey); DES.Mode = CipherMode.ECB; DESEncrypt = DES.CreateEncryptor(); } catch (System.Exception e) { return null; } return DESEncrypt.TransformFinalBlock(arrEncrypt, 0, arrEncrypt.Length); } public static string ToBase64(byte[] str) { return Convert.ToBase64String(str); } }
public class Encrypt { public static string Decrypt3DESFromBase64(string strDecrypt, string strKey) { return Encoding.UTF8.GetString(Decrypt3DES(FromBase64(strDecrypt), strKey)); } public static byte[] FromBase64(string str) { return Convert.FromBase64String(str); } public static byte[] Decrypt3DES(byte[] arrDecrypt, string strKey) { ICryptoTransform DESDecrypt = null; try { TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider(); DES.Key = ASCIIEncoding.ASCII.GetBytes(strKey); DES.Mode = CipherMode.ECB; DES.Padding = System.Security.Cryptography.PaddingMode.PKCS7; DESDecrypt = DES.CreateDecryptor(); } catch (System.Exception e) { return null; } return DESDecrypt.TransformFinalBlock(arrDecrypt, 0, arrDecrypt.Length); } }