http://blog.csdn.net/michaell_zhang/article/details/5979883
C#客户端访问PHP SOAP WebService,当传输大量文本数据时,可以通过压缩减少网络传输。
C#在System.IO.Compression命名空间下提供了两个类GZipStream 类和DeflateStream类来进行数据的压缩和解压缩。经本人实验,在C#下使用GZipStream压缩的字符串在PHP下使用gzuncompress函数无法解压缩,有人说可以使用gzdecode解开,但本人的PHP不支持gzdecode函数,但有gzencode函数(why?原因未明,据说是PHP的BUG,可能到PHP6才提供此函数)。
C#下使用DeflateStream类压缩文本后,可以在PHP下用gzinflate解压缩。示例代码如下:
客户端C#(在头4个字节增加了原文本的长度,方便在C#中解压缩,对于在PHP端解压缩这个没有用处):
public static string Compress(string text) { byte[] buffer = Encoding.UTF8.GetBytes(text); MemoryStream ms = new MemoryStream(); using (DeflateStream zip = new DeflateStream(ms, CompressionMode.Compress, true)) { zip.Write(buffer, 0, buffer.Length); } ms.Position = 0; MemoryStream outStream = new MemoryStream(); byte[] compressed = new byte[ms.Length]; ms.Read(compressed, 0, compressed.Length); byte[] gzBuffer = new byte[compressed.Length + 4]; System.Buffer.BlockCopy(compressed, 0, gzBuffer, 4, compressed.Length); System.Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, gzBuffer, 0, 4); return Convert.ToBase64String(gzBuffer); }
服务端PHP:
function Decompress($strSource) { $strTemp = base64_decode($strSource); $strTemp = substr($strTemp, 4); return gzinflate($strTemp); }
支持中文,编码为UTF8.
http://blog.csdn.net/allsharps/article/details/7357328
/// <summary> /// 简单的压缩 /// </summary> public static class CompressHelper { /// <summary> /// 压缩字符串 /// </summary> /// <param name="str"></param> /// <returns></returns> public static byte[] CompressString(string str) { return CompressBytes(Encoding.UTF8.GetBytes(str)); } /// <summary> /// 压缩二进制 /// </summary> /// <param name="str"></param> /// <returns></returns> public static byte[] CompressBytes(byte[] str) { var ms = new MemoryStream(str) {Position = 0}; var outms = new MemoryStream(); using (var deflateStream = new DeflateStream(outms, CompressionMode.Compress, true)) { var buf = new byte[1024]; int len; while ((len = ms.Read(buf, 0, buf.Length)) > 0) deflateStream.Write(buf, 0, len); } return outms.ToArray(); } /// <summary> /// 解压字符串 /// </summary> /// <param name="str"></param> /// <returns></returns> public static string DecompressString(byte[] str) { return Encoding.UTF8.GetString(DecompressBytes(str)); } /// <summary> /// 解压二进制 /// </summary> /// <param name="str"></param> /// <returns></returns> public static byte[] DecompressBytes(byte[] str) { var ms = new MemoryStream(str) {Position = 0}; var outms = new MemoryStream(); using (var deflateStream = new DeflateStream(ms, CompressionMode.Decompress, true)) { var buf = new byte[1024]; int len; while ((len = deflateStream.Read(buf, 0, buf.Length)) > 0) outms.Write(buf, 0, len); } return outms.ToArray(); } }
相关推荐
.NET FCL对称加密算法实现个帮助工具 .NET FCL对称加密算法实现个帮助工具 .NET FCL对称加密算法实现个帮助工具
.net c# RSA对称加密, 解决加密长度限制,可以直接使用
一个简单的使用.Net非对称加密算法的例子, 本例的程序很简单,仅用于说明如何在.Net里面使用非对称(RSA)算法。
.net RSA非对称加密例子
.NET加密技术剖析
试用与java对称加密、.net对称加密,便于java和.net在通信过程中加密传输数据。
.NET关于string转换的一个小Bug Regular Expressions 完整的在.net后台执行javascript脚本集合 ASP.NET 中的正则表达式 常用的匹配正则表达式和实例 经典正则表达式 delegate vs. event 我是谁?[C#] 表达式计算引擎...
我们研究超对称压缩的非摄动稳定性,关于通过无气泡的衰减。 我们显示了自旋结构不禁止这种不稳定性的示例,即费米子关于额外维度的周期性。 但是,这种``拓扑不受阻碍''的情况确实表现出众所周知的Coleman-De ...
DES是一种对称加密(Data Encryption Standard)算法,于1977年得到美国政府的正式许可,是一种用56位密钥来加密64位数据的方法。一般密码长度为8个字节,其中56位加密密钥,每个第8位都用作奇偶校验
轴对称橡胶垫的压缩模拟,采用ABAQUS分析软件,对于学习分析有参考作用
Visual Studio .NET加密技术剖析系列课程(2):对称加密技术 code
.NET , RSA非对称加解密源码。让初学者理解非对称加密逻辑。
由对称性解2-SAT问题 个人觉得是一份很好的教材
.net加密技术 对流可以执行对称加密,因此对称加密对于加密大量的数据很有用
对称矩阵压缩验证实验(数据结构实验,c语言版)
RSA DSA 对称 非对称 加密 解密 XML 数字签名 C#.NET 安全编程这门课的大作业 里面有详细的例子,方便大家学习
密码技术&对称密码,本文档讲述了密码的技术原理和对称密码技术
深度非对称压缩型哈希算法.docx
关于三维等熵欧拉方程组的球对称古典解,杜亨荣,李杰权,本文研究三维等熵欧拉方程具有球对称结构的古典解. 通过未知量作加权,空间尺度变换和引进黎曼不变量,将原来带有奇异源项的方程组�