Skip to content

Tag Archives: DLL

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

14-May-09

Views: 0今天有人告诉我他们做的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的源代码和测试用例。使用方法见测试用例)