C语言网络编程和跨平台代码安全性的示例分析-创新互联

本篇文章给大家分享的是有关C语言网络编程和跨平台代码安全性的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

创新互联专注于灵璧网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供灵璧营销型网站建设,灵璧网站制作、灵璧网页设计、灵璧网站官网定制、微信小程序定制开发服务,打造灵璧网络公司原创品牌,更为您提供灵璧网站排名全网营销落地服务。

C语言语法简洁,但内涵丰富。对一个聪明的人来说,可能几个小时就能学会使用C语言,但可能一辈也很难成为大师。C语言处处隐藏陷阱,没有阅读过大量优秀代码,没有思考过大师专家级代码的特别之处,没有写了过大量应用程序,写的程序中往往容易不经意间隐藏地雷。一旦爆发,系统被炸的面目全非。

兹摘抄一个知名公司系统中的代码研究

1.  移位陷阱

公司的大牛在写一个base64编解码程序时,使用了如下方法:

staticvoid encodeblock( unsigned char *in, unsigned char *out, int len )

{

out[0] = (unsigned char) cb64[ (int)(in[0]>> 2) ];

out[1] = (unsigned char) cb64[ (int)(((in[0]& 0x03) << 4) | ((in[1] & 0xf0) >> 4)) ];

out[2] = (unsigned char) (len > 1 ? cb64[(int)(((in[1] & 0x0f) << 2) | ((in[2] & 0xc0) >> 6)) ] :'=');

out[3] = (unsigned char) (len > 2 ? cb64[(int)(in[2] & 0x3f) ] : '=');

}

这在本系统中不错,但却隐藏着很大的风险,系统是做为基础的加密工具给公司各种各样的嵌入式设备使用,这里隐藏着一个数组越界的地雷。(int)(in[0] >> 2)如果不&0x3f,在不同编绎器环境下,右移位后,左边空拉有些是填充零,有些时填充1,有些是填充高符号位,这样就会导致不同系统的加密出现数据一不致性,有时会溢出。

2. 对齐陷阱

Sizeof是在C语言里经常使用的方法,有人把归为运算符,其他他计算结构体变量的指针偏移相当方便,有很多书推荐,因为他计算基础类型变量时能根据系统和编绎器不同自动计算调整,具有很强的自适应性和跨平台能力,但这种自适合性在单机程序中是很牛X,不过有不同系统交互时,会存在数据不一致。不同系统或者编程语言会把同样结构转为不同的byte流,这种情况下,数据传输交互就会失去一致性。而且我们的系统使用C语言,java作为客户端,而java是没有结构体的,只能把对象的成员根据系统大小自拼接,c语言老手建议我在java端对C系统做适配,在java端做一个类似C结构对齐的操作,这是一个很复杂的工程,C语言端是二字节对齐还是四字节对齐不要猜测,要针对不同的C设备做适配又是不一件不可能的事。

以上就是C语言网络编程和跨平台代码安全性的示例分析,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。


分享标题:C语言网络编程和跨平台代码安全性的示例分析-创新互联
转载来源:http://azwzsj.com/article/dsohhp.html