/// <summary> /// 解密函数 /// </summary> /// <param name="Content">解密内容</param> /// <param name="privateKey">私钥(XML格式)</param> /// <param name="rsaDes">经RSA加密后的desKey与desIV的集合</param> /// <param name="desKey">经RSA解密后的desKey</param> /// <param name="desIV">经RSA解密后的desKey</param> /// <returns>byte[]</returns> public byte[] DecryptBytes(string Content, string privateKey, string rsaDes, out string desKey, out string desIV) { byte[] byteResult = null; if (FunctionHelper.CheckValiable(rsaDes)) { // 解密DES密钥和初始化向量 RSACrypto RC = new RSACrypto(); string des = RC.RSADecrypt(privateKey, rsaDes); string[] desArray = FunctionHelper.SplitArray(des, '§'); desKey = desArray[0]; desIV = desArray[1]; // DES解密内容 DESCrypto DC = new DESCrypto(); byteResult = DC.DecryptBytes(Content, desKey, desIV); } else { desKey = ""; desIV = ""; byteResult = Convert.FromBase64String(Content); } return(byteResult); }
/// <summary> /// 解密函数 /// </summary> /// <param name="Content">解密内容</param> /// <param name="privateKey">私钥(XML格式)</param> /// <param name="rsaDes">经RSA加密后的desKey与desIV的集合</param> /// <param name="desKey">经RSA解密后的desKey</param> /// <param name="desIV">经RSA解密后的desKey</param> /// <returns>string</returns> public string DecryptString(string Content, string privateKey, string rsaDes, out string desKey, out string desIV) { string strResult = ""; if (FunctionHelper.CheckValiable(rsaDes)) { // 解密DES密钥和初始化向量 RSACrypto RC = new RSACrypto(); string des = RC.RSADecrypt(privateKey, rsaDes); string[] desArray = FunctionHelper.SplitArray(des, '§'); desKey = desArray[0]; desIV = desArray[1]; // DES解密内容 DESCrypto DC = new DESCrypto(); strResult = DC.DecryptString(Content, desKey, desIV); } else { desKey = ""; desIV = ""; strResult = Content; } return(strResult); }
/// <summary> /// 加密 byte[] 并返回 byte[] /// </summary> /// <param name="Content">加密内容</param> /// <param name="publicKey">公钥(XML格式)</param> /// <param name="desKey">DES密钥</param> /// <param name="desIV">DES向量</param> /// <param name="rsaDes">经RSA加密后的desKey与desIV的集合</param> /// <returns>byte[]</returns> public byte[] EncryptBytes(byte[] Content, string publicKey, string desKey, string desIV, out string rsaDes) { byte[] byteResult = null; if (FunctionHelper.CheckValiable(publicKey)) { // DES加密内容 DESCrypto DC = new DESCrypto(); byteResult = DC.EncryptBytes(Content, desKey, desIV); // 加密DES密钥和初始化向量 RSACrypto RC = new RSACrypto(); string des = desKey + "§" + desIV; rsaDes = RC.RSAEncrypt(publicKey, des); } else { rsaDes = ""; byteResult = Content; } return(byteResult); }
/// <summary> /// 加密 byte[] 并返回 string /// </summary> /// <param name="Content">加密内容</param> /// <param name="publicKey">公钥(XML格式)</param> /// <param name="desKey">DES密钥</param> /// <param name="desIV">DES向量</param> /// <param name="rsaDes">经RSA加密后的desKey与desIV的集合</param> /// <returns>string</returns> public string EncryptString(byte[] Content, string publicKey, string desKey, string desIV, out string rsaDes) { string strResult = ""; if (FunctionHelper.CheckValiable(publicKey)) { // DES加密内容 DESCrypto DC = new DESCrypto(); strResult = DC.EncryptString(Content, desKey, desIV); // 加密DES密钥和初始化向量 RSACrypto RC = new RSACrypto(); string des = desKey + "§" + desIV; rsaDes = RC.RSAEncrypt(publicKey, des); } else { rsaDes = ""; strResult = Encoding.UTF8.GetString(Content); } return(strResult); }
/// <summary> /// 获取以 POST 方式发送过来的流数据和 Header 中的信息 /// </summary> /// <param name="RsaDESSTRING">用于DES加密解密的 Key 和 IV 的集合</param> /// <returns>byte[]</returns> public byte[] ReceiveToBytes(out string RsaDESSTRING) { if (Request.RequestType != "POST") { RsaDESSTRING = ""; return(null); } try { Stream stream = Request.InputStream; using (StreamReader sr = new StreamReader(stream, Encoding.UTF8)) { byte[] buffer = new byte[(int)stream.Length]; stream.Write(buffer, 0, buffer.Length); RsaDESSTRING = FunctionHelper.CheckValiable(Request.Headers["CS_DESSTRING"]) ? Request.Headers["CS_DESSTRING"] : ""; return(buffer); } } catch (Exception exc) { throw exc; } }
/// <summary> /// 获取以 POST 方式发送过来的流数据和 Header 中的信息 /// </summary> /// <param name="RsaDESSTRING">用于DES加密解密的 Key 和 IV 的集合</param> /// <returns>string</returns> public string ReceiveToString(out string RsaDESSTRING) { if (Request.RequestType != "POST") { RsaDESSTRING = ""; return(""); } try { Stream stream = Request.InputStream; string strResult = ""; StreamReader sr = new StreamReader(stream, Encoding.UTF8); char[] read = new char[256]; int count = sr.Read(read, 0, 256); int i = 0; while (count > 0) { i += Encoding.UTF8.GetByteCount(read, 0, 256); string str = new String(read, 0, count); strResult += str; count = sr.Read(read, 0, 256); } RsaDESSTRING = FunctionHelper.CheckValiable(Request.Headers["CS_DESSTRING"]) ? Request.Headers["CS_DESSTRING"] : ""; return(strResult); } catch (Exception exc) { throw exc; } }
/// <summary> /// 发送方获取接收方返回的信息 /// </summary> /// <param name="res">返回给发送方的 Response 对象</param> /// <param name="CS_RESULT">返回操作结果</param> /// <returns>string</returns> public static string GetResponseContent(WebResponse res, out string CS_RESULT) { CS_RESULT = FunctionHelper.CheckValiable(res.Headers["CS_RESULT"]) ? res.Headers["CS_RESULT"] : ""; return(cs.GetResponseStream(res)); }