Skip to content

Tag Archives: C

C++怀旧贴:OpenWatcom

03-Jul-09

Views: 3在很久很久以前,DOS的年代,编译器技术还没那么高超的时候,有个叫Watcom C/C++的编译器可以提供极其高效的优化代码。记得很久以前看一个Geek写的编译器比较,他赞叹Watcom编译生成的代码竟然比手动优化的效率还要高。在DOS年代,Watcom更是占据了大半游戏开发的江山。由于DOS下面有640K内存限制而游戏运行往往需要更大内存,所以Watcom和自带的DOS/4GW(用于突破DOS的640K内存限制)的组合便是DOS下游戏开发的不二之选。在93-96年间,几乎所有的游戏都是使用Watcom C开发的,包括大名鼎鼎的Duke Nukem 3D和Doom。 但在微软淘汰DOS的过程以及Windows上的各种C/C++编译器的圣战中,Watcom转型很不成功,最终败下阵来,被Sybase收购,随后又被抛弃。这段历史在李维先生的《Borland传奇》中又比较细腻的描述。 Sybase对Watcom做的最正确的一件事就是在2000年的时候将Watcom编译器开源为OpenWatcom项目。正是这一无奈之举延续了Watcom的生命,使它脱离了混乱的组件规范和平台特性的恶意竞争,而在一片僻静之地靠社区的号召力和热情活了下来。打开OpenWatcom的新闻组,用户讨论区里面虽然不是特别火热,但一个星期总有3、4个topic,而且基本没有0回复。

C语言,MD5算法,与Windows动态连接库

14-May-09

Views: 2今天有人告诉我他们做的Web应用要在登录页面加上密码加密用于防止。加密方式与某国际门户网站相同。 大体机制如下: 1. 当加载页面的时候,服务器动态生成一个ticket,一起返回客户端。 2. 在客户端提交时,用MD5算法先将用户输入的密码进行加密得到一个十六进制格式的字符串,然后将这个字符串与那个ticket相加再用MD5加密一下,再次得到一个32个字符的十六进制格式的字符串。将这个字符串返回服务器。这种方式可以简单的预防一下中间人攻击(MIM Attack)。 他们的问题是他们在项目中使用了某个录制屏幕的自动化测试工具。这类工具一般都是录制每个request和目标URL,并保存Response。然后不断的回放、重复每个请求,并校验Response。 这个工具在测他们这个新的登录功能的时候就出现了问题。因为每次登录时的ticket都是新的,所以上次录制下来的经过ticket混淆的密码字符串在下一次登录请求的时候是无效的。 他们要求做一个标准的能实现这个字符串加密功能的DLL,加载到他们的测试工具里。他们在测试脚本里来调用这个DLL,以便于每次脚本执行的时候都能根据当时的ticket生成一个有效的密码字串返回给服务器。 功能很简单,MD5的算法Google一搜一大把。自己从网上扒下来RSA Data Security, Inc.的MD5算法代码,加上那两次MD5加密的逻辑,然后在CodeBlocks里建个DLL工程,编译,搞定,还顺手写了个测试。不过这么长时间没鼓捣C,还真是有点手生。(记得上一次搞DLL相关的东西还是在05年的时候。) 总结一下这个玩意有什么价值。其实……没用,连C语言练手都算不上。不过那些想做DLL的新手倒是可以参考一下。 把这段代码放上来,再加上以前解释DLL的那个文章,做个备案,防止以后忘了Windows 的DLL是什么东西。 PasswordEncoder DLL source code (这个包是CodeBlocks的workspace,包括DLL的源代码和测试用例。使用方法见测试用例)