示例#1
0
        public static string _myDecrypt(string inData)
        {
            //******下面的代码是服务器上的加密方法

            /* function __myEncrypt($data){
             *
             *   if(isset($_GET['r'])){
             *      //客户端设置KS_CMD("set", "<rsa>0</rsa>")会执行下列加密算法
             *       $rc4密钥2 = _rs(2);
             *       $rc4密钥3 = _rs(3);
             *       $rc4加密 = rc4byte($rc4密钥2,$data);
             *       $rc4加密 = rc4byte($rc4密钥3,$rc4加密);
             *       $base64编码数据 = base64_encode($rc4加密);   //必须base64_encode
             *       return $base64编码数据;
             *   }else{
             *       //客户端不设置KS_CMD("set", "<rsa>0</rsa>")就会执行下列加密算法
             *       $rc4密钥 = _rs(2);     //取ADVAPI字符串资源第二行字符串做为rc4密钥,当然也可以使用make_key()随机生成一个。
             *       $rsa加密的rc4密钥 = encode_rsa2(_rs(1),$rc4密钥);//对rc4密钥进行rsa加密,
             *       $加密后的数据 = base64_encode(rc4byte($rc4密钥,$data));   //对data数据进行rc4加密,然后再base64编码
             *       $返回数据 = $rsa加密的rc4密钥 . ',' . $加密后的数据;使用‘,’合并密钥和加密数据,然后返回客户端 ,
             *       return $返回数据;
             *   }
             * }*/
            //*****下面的代码是服务器第一种加密方式进行解密的算法
            //string rc4key = "";
            //byte[] str1, str2;
            //byte[] base64 = SoftXLic.Base64Decode(inData);
            //rc4key = "FC7fx6KbzwmBJ98pAiEArOz2Kej";
            //str1 = SoftXLic.rc4(rc4key, base64);
            //rc4key = "CIQDirubbjUUwuvO86IaeFFI0oXFa";
            //str2 = SoftXLic.rc4(rc4key, str1);
            //return System.Text.Encoding.Default.GetString(str2);

            //*****下面的代码是服务器第二种加密方式进行解密的算法
            string publicKey = "<RSAKeyValue><Modulus>wkX6jOTuOc+r2d9XuPybqWWXWCySTdQl33zo8HWoSoKuLz8+HKSpslcoy1MMyw07GA7sclODMZ/m1KtHy/FYrw==</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";
            string rc4enkey  = "";
            string rc4endata = "";

            if (inData.Split(',').Length == 2)
            {
                rc4enkey  = inData.Split(',')[0];
                rc4endata = inData.Split(',')[1];
            }
            else
            {
                return("开发者自己设置返回的错误");
            }
            byte[] deData = SoftXLic.Base64Decode(rc4endata);         //进行base解码
            string rc4key = SoftXLic.RSADecrypt(rc4enkey, publicKey); //对rc4enkey使用rsa进行解密

            byte[] byteData = SoftXLic.rc4(rc4key, deData);           //使用rc4key对deData进行解密
            string data     = System.Text.Encoding.Default.GetString(byteData);

            return(data);
        }
示例#2
0
        public static string FD_(string ioData)
        {
            string data_s = "";

            byte[] b64buff;
            if (ioData.StartsWith(SoftXLic._softhead))            //检查字符串是否是密文
            {
                ioData  = ioData.Replace(SoftXLic._softhead, ""); //去除密文标识头
                data_s  = SoftXLic._myDecrypt(ioData);
                b64buff = SoftXLic.Base64Decode(data_s);
                return(System.Text.Encoding.Default.GetString(b64buff));;
            }
            else
            {
                if (!ioData.StartsWith("<xml>"))
                {
                    return("<xml><state>140</state><message>DLL内部错误,返回的数据异常" + ioData + "</message></xml>");
                }
            }
            return(ioData);
        }