예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        /// <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);
        }
예제 #4
0
        /// <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);
        }
예제 #5
0
        /// <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;
            }
        }
예제 #6
0
        /// <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;
            }
        }
예제 #7
0
        /// <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));
        }