求DeflatedSAML如何解码。

gautrunee 2015-05-19 09:54:09
菜鸟求处理saml(deflate+base64+urlencode)的客户端解码程序。
已知为 urldecode,frombase64,inflate. 但inflate函数不知在哪里找。
开发环境:vs2010,wpf,vc++


eJyskstOwzAQRfdI/IPlfepQdlHSDagCqYVFQWJXGWdoLPlR/FDM3+MmbtPShxBiN547c3w94/IJ2nvq6ALc5PoKoTLYwrIGJEW8rvCgYhSkULbCKShCjBvn1gUhbduO2tuRNisyzvMb8jafLTrGtlbaOlIq7I1KdJtJzoy2+sNlTMsi1mV9Fe589E5AgATlkKISDs30tcWjTZkKO+Nhl3+1cOeNib0zzaiAJCd0D4/XrgWEl6817PJJaTRngCRXz4x5Ex+aRzIN25NX79qrGmq813jKsdHaLUOej6fLB6DCNVMuYE4VXcFh6yVHg27h04Nix+Kpu3mNkYukCm86neFqhX88ifwKtBnolIP4Nx5Y9gdUSc5PoNPOTa8Tk4X9RZPdpodvcZpzROi9dB958g0AAP//tJXbSgJRFIZfpcsRFA91KYJ4Ed4EYT2A6CYl0vBAXY6gNKaWhmR4wCxMKxhHlDxM5cM4e43zFu1xe5igAxbezVr/2ov1/fsw0/iHjZ738HttzrA9GgluowAKuSPI7vWGUDhsNRJlVrOw2ma2GpfBXCXG2XCsjoc9qN1DjYPbAWR43E7gRl56LTJQyenwVRoLlzg9ZGQxrpucPeHzppyvApfFZQFXWNJXbUMpfht7Ja79YzIx2gme/A0Mblo4+0CRgOvJ7QwdWE8ZoNSFa0G+EGiWMRmkfoZKerOBfujWB+fwuQMHyBFC7sie/wh9zWb5jm3MZrX7NmZzKm0iNuH70oiH/ACLQ1UqvCiFLkXTqgTwU2gxSGKCuEFXaaW1OLAb9XsOXcgd8vhc5BZ4Ik7y9p3+zwI8elbYKlTrk9YdsQNzFdxIKWwSUo9KbSCX+An/Lr/xzIbJAEkWyklyykHIESdoSE6I1BeJE8DlcKIDnaZcjM9qNtXkMtya1kytWiRX8clq1PwjPwAAAP//AwDHVrSQ

...全文
487 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
潘子 2018-09-21
  • 打赏
  • 举报
回复
<NewDataSet> <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="root_x002F_HealthFileManage"> <xs:complexType> <xs:sequence> <xs:element name="id" type="xs:string" minOccurs="0" /> <xs:element name="dataField" type="xs:string" minOccurs="0" /> <xs:element name="desc" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> </xs:element> </xs:schema> <root_x002F_HealthFileManage> <id>IsAutoGenerateAddress</id> <dataField>1</dataField> <desc>健康档案根据居委会(村)和小区(组)自动生成地址</desc> </root_x002F_HealthFileManage> <root_x002F_HealthFileManage> <id>IsAutoUpdateNowAddress</id> <dataField>1</dataField> <desc>是否根据户籍地址,自动更新现地址(0-不自动,1-自动)</desc> </root_x002F_HealthFileManage> <root_x002F_HealthFileManage> <id>IsAutoChangeCreatTime</id> <dataField>2</dataField> <desc>【健康档案】是允许修改建档时间(0-不允许修改,1-允许修改,2-仅新建档允许修改)</desc> </root_x002F_HealthFileManage> <root_x002F_HealthFileManage> <id>QuickSearchSelectIndex</id> <dataField>2</dataField> <desc>【健康档案快速查询】初始选择项目设置( 0-所有居民,1-所有户主,2-我关注的居民,3-我的居民,4-我建档的居民)</desc> </root_x002F_HealthFileManage> </NewDataSet>
gautrunee 2015-05-22
  • 打赏
  • 举报
回复
 public  byte[] Decompress(byte[] Data)
 {
            try {
                int offset = 0;
                if (((Data.Length > 2) && ((Data[0] & 15) == 8)) && (((Data[0] & 0x80) == 0) && ((((Data[0] << 8) + Data[1]) % 0x1f) == 0)))
                {
                    offset = 2;
                }
                byte[] bData=new byte[Data.Length -offset];
                int i=0;
                for (i = 0; i < Data.Length - offset; i++)
                {
                    bData[i] = Data[offset + i];
                }

                MemoryStream ms = new MemoryStream();
                ms.Write(bData, 0, bData.Length);
                ms.Position = 0;
                DeflateStream stream = new DeflateStream(ms, CompressionMode.Decompress, true);
                byte[] buffer = new byte[4096];
                MemoryStream temp = new MemoryStream();
                int read = stream.Read(buffer, 0, buffer.Length);
                while (read > 0)
                {
                    temp.Write(buffer, 0, read);
                    read = stream.Read(buffer, 0, buffer.Length);
                }
                //必须把stream流关闭才能返回ms流数据,不然数据会不完整       
                stream.Close();
                stream.Dispose();
                ms.Close();
                ms.Dispose();
                bData = temp.ToArray();
                temp.Close();
                temp.Dispose();
                return bData;
            }
            catch{
                return Encoding.UTF8.GetBytes(@"无法解码,Inflate:ydecompress()");
            }
gautrunee 2015-05-20
  • 打赏
  • 举报
回复
已解决: deflatedstream (decompress)
gautrunee 2015-05-20
  • 打赏
  • 举报
回复
url_decode,base64_decode,inflate 仍然无法解码。

8,735

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧