平平庸庸

响应号召,开始写日志(三):lr脚本中MD5码获取方案

上一篇 / 下一篇  2009-03-18 13:07:45 / 个人分类:测试工具

在类似网关的服务中使用md5散列的方式来确保数据未被篡改是一种比较普遍的方式。关于md5是什么您可以问问百度知道知道不知道,我觉得它应该知道。一个理解的难点可能是这样的:

   如果这个安全性的做法是基于黑客可以截获数据并加以篡改的假设的。那么他一样可以在篡改了内容之后对篡改后的内容重新计算md5替换原来的md5然后转发给服务端。这样做貌似不能解决假设中的那个问题么?这个问题的答案就是为什么我们需要私有密钥的答案。因为私有密钥是计算入md5的,同时不会发送给服务端。所以黑客篡改后的内容的地md5必然不正确。

那为什么md5码会成为脚本中的一个问题那?因为比较可能的情况是这样的:

页面上通过调用md5.js完成md5的计算。然后把md5就作为请求发出去了。lr没办法控制这步。
解决方法有两个:

1、插入一个中间页面把生成的md5打出来。脚本在此处做关联。

这个做法的问题是

a 增加了不必要的网络开销。当然开销很小。

b 可能每个使用到md5的请求后面都要一个中间页面。不必要的工作量。

虽然如此,这的确是个解决方案。可以让我们把工作继续下去。

2、第二个方法需要一个完成md5散列的dll。在本地完成md5的计算,然后把请求发出去。

这个方法在网上有很多资料。找一把就明白了。这里要说的重点是这个dll本身应该具备如何的特性或者说功能才可以更好的支持lr性能测试的需要?实践告诉我,需要如下两点:

支持多线程。
      如果不支持多线程,那么场景中只能将虚拟用户的运行方式设置为进程模式才能正常运行。不然就抱错。增加不必要的加压机的开销。

提供的加密方法的形参只需要一个需要加密的字符串,而不需要指定长度。这是必然一个功能的要求。
要开始忙了。不多说废话了。现在网上找的md5.dll不是不支持多线呈就是需要你加个长度。所以我改了一个两全其美的。一定能符合广大lr使用者的需求。测试过600个字符的数字字母符号的组合,跟md5.js是一致的。不要用汉字,汉字还有问题。这里输出的是大写的英文字符。

方法名:getoutmd5

样例代码:

 char orSignMD5[1024];

 char orSignMD5str[32];

 strcpy( orSignMD5,lr_eval_string("{creditcontact}") ); //要转的字符存在一个参数里面的

 sprintf( orSignMD5str,"%s",getoutmd5(orSignMD5) );//要用orSignMD5str的时候要存成参数,用lr_save_string();

ps.不要忘记再init里面把dll 加上

 lr_load_dll("md5.dll");

 


TAG: 虚拟用户 DLL dll 性能测试 LoadRunner LR lr MD5 md5

5555的个人空间 引用 删除 5555   /   2012-06-17 15:55:07
有用,收藏了,谢谢!
引用 删除 c1425   /   2009-08-23 17:01:02
建议提供函数声明。
 

评分:0

我来说两句

Open Toolbar