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框架(.NET FCL,即.NET Framework Class Library)提供了丰富的加密功能,其中包括对称加密算法。对称加密是一种常见的加密方法,它依赖于相同的密钥进行数据加密和解密,因此效率较高,适合大量数据的加解密...
.net c# RSA对称加密, 解决加密长度限制,可以直接使用
### 使用.NET非对称加密算法实例 #### 一、引言 非对称加密是一种重要的加密方式,在现代信息安全领域有着广泛的应用。与对称加密不同的是,非对称加密使用一对密钥:公钥和私钥。公钥可以公开分发,而私钥则必须...
本文将深入探讨如何在ASP.NET环境中实现RSA加密,并且与PHP和Java进行互通,以及涉及的PKCS#8格式的密钥文件和BouncyCastle.Crypto.dll库的使用。 首先,RSA是一种基于大素数因子分解困难性的公钥加密算法,由Ron ...
本示例将深入探讨如何在.NET环境中使用RSA加密,以确保信息的安全。 RSA(Rivest-Shamir-Adleman)是非对称加密算法的代表,其基本原理是利用两个大素数生成一对密钥:公钥和私钥。公钥可以公开给任何人,用于加密...
下面我们将详细探讨相关的知识点。 1. **VB.NET基础**: VB.NET是微软公司开发的一种面向对象的编程语言,它是.NET框架的一部分。VS2008(Visual Studio 2008)是微软提供的集成开发环境,支持包括VB.NET在内的...
本文将深入剖析.NET中的对称加密技术,探讨其原理、实现方式以及在实际项目中的应用。 对称加密技术的核心思想是加密和解密使用相同的密钥。这使得它在处理大量数据时表现出较高的效率,适用于快速加密和解密大量...
本文将详细介绍.NET中常见的几种加密方法,包括固定Key、随机Key、对称加密以及MD5加密。这些技术在保护敏感信息、验证数据完整性和防止数据篡改方面起着至关重要的作用。 1. 固定Key加密: 固定Key加密是指使用一...
我们研究超对称压缩的非摄动稳定性,关于通过无气泡的衰减。 我们显示了自旋结构不禁止这种不稳定性的示例,即费米子关于额外维度的周期性。 但是,这种``拓扑不受阻碍''的情况确实表现出众所周知的Coleman-De ...
DES是一种对称加密(Data Encryption Standard)算法,于1977年得到美国政府的正式许可,是一种用56位密钥来加密64位数据的方法。一般密码长度为8个字节,其中56位加密密钥,每个第8位都用作奇偶校验
### C# 和 VB.NET 中的加解密技术详解 #### 一、背景介绍 随着互联网技术的迅猛发展,数据安全成为越来越重要的问题。在软件开发过程中,为了保护用户隐私及重要信息,加密技术被广泛应用于各种场景。本篇文章将...
"轴对称橡胶垫的压缩模拟"这个主题聚焦于如何利用高级计算软件来理解和预测非线性材料,如橡胶,在受压情况下的行为。ABAQUS是一款业界公认的高级有限元分析软件,广泛用于模拟复杂几何形状和非线性材料属性。 ...
通过对这些文件的深入学习和分析,开发者可以更好地理解和实践.NET中的对称加密技术,从而提高数据安全保护能力。在实际应用中,还需要注意密钥管理,因为对称加密的安全性依赖于密钥的安全存储和交换,防止密钥泄露...
8. **源码结构**:完整的源码应该包含多个类或模块,每个负责不同的功能,如密码输入验证、文件读写、压缩解压缩等。理解这些类之间的关系和职责划分有助于学习和维护代码。 9. **编译与部署**:最后,项目需要被...
《.NET SECURITY AND CRYPTOGRAPHY》是一本深入探讨.NET框架下安全性和密码学的英文电子书,旨在帮助开发者理解并应用加密技术来保护应用程序和数据。这本书通过丰富的实例,详细阐述了.NET环境中如何实现安全编码和...
这份"VB6压缩解压缩、加密解密源码大全"集合了丰富的算法,提供了21种不同的加密方法和54种压缩技术,对于深入理解和实践这些概念非常有价值。 首先,让我们探讨加密技术。加密是一种将原始数据(明文)转化为不可...
综上所述,VB编程可以实现各种加密和压缩功能,尽管它可能不如专门的加密或压缩库那么强大,但结合.NET Framework的类库和其他开源库,开发者可以构建满足实际需求的解决方案。在实践中,理解不同加密算法的优缺点,...
本主题将深入探讨RSA和DSA两种非对称加密算法,以及对称加密的概念,同时涉及XML数字签名的实现。 首先,让我们了解对称加密和非对称加密的基本原理。对称加密使用相同的密钥进行加密和解密,如DES、3DES和AES等。...
3. **对称加密**:如AES(高级加密标准),在ASP.NET中,可以使用`System.Security.Cryptography`命名空间中的类进行对称加密。这种方法适用于需要解密密码的情况,比如在服务器端验证用户身份时。然而,密钥管理是...
在.NET 4.0框架下,使用C#开发桌面应用程序时,可以实现用户选择文件夹,然后自动压缩其中的文件并支持密码加密的功能。这个功能的实现涉及到几个关键知识点: 1. **文件和文件夹操作**: - `System.IO`命名空间...