为什么.Net CF在调用HTTPS 的Web服务时失败
2010-08-30 00:15:00 来源:WEB开发网核心提示:Step 1: 未加密的数据 其次,服务端调用EncryptMessage方法,为什么.Net CF在调用HTTPS 的Web服务时失败(2),在适当的位置为这个未加密的数据包进行加密,主要是给这个数据包加入了一个Header和Footer:Step 2: header加密后的数据footer这个Header的长度可
Step 1:
未加密的数据
其次,服务端调用EncryptMessage方法,在适当的位置为这个未加密的数据包进行加密。主要是给这个数据包加入了一个Header和Footer:
Step 2: |
header |
加密后的数据 |
footer |
这个Header的长度可能是5bytes,那么Footer则要更长一些。对于这个数据包,它的长度肯定已经大于未加密的数据长度,在接下来的时候,它将被发送到接收端,并被执行DecryptMessage方法进行解密。
现在,当服务端把一个0长度的流加密成一个数据包发送到客户端时,.NetCF的SSL堆栈就产生问题了。
Step 1: |
|
0 byte的未加密数据 |
|
Step 2: |
header |
非0 byte的加密后数据 |
footer |
显然,加密前后,数据包长度已经发生变化。当这个数据包被发送到.NetCF客户端时,当前版本(译者按:2.0/3.5)的.NetCF将会解密这个数据包,并且返回一个0长度的数据流给调用者(译者按:我认为是上文中的Server端,下文提到的调用者也应该是Server端)。
通常意义上,对于一个网络中的Read方法而言(译者按:网络通信应该是互相往来,就如上文所提到的,服务端发送一个数据给客户端,那么客户端按照一定的规则返回一个结果到服务端,服务端使用Read方法进行接收),只有在收到数据后才执行,否则一直处于阻塞状态,如果收到的数据是一个0长度的数据流,那么则意味着这个socket连接已经被关闭。
- ››为什么SQL Server使用很少的内存
- ››为什么不能说服高层去在用户体验上投入
- ››为什么Windows Mobile会失败?
- ››为什么我们需要域?Active Directory系列之一
- ››为什么治理如此重要:IBM 专家们争论数据治理的前...
- ››cFosSpeed 6.0发布,网络驱动程序
- ››为什么.Net CF在调用HTTPS 的Web服务时失败
- ››为什么QQ正常登陆 IE却无法打开?
- ››为什么博客网站利于优化排名?
- ››Netpas加速 让非电信宽带用户流畅上网
- ››net中fckediter的图片上传时候点击\浏览服务器\出...
- ››Netmsg局域网聊天程序
更多精彩
赞助商链接