LR脚本中MD5码获取方案
来源:互联网 发布:皮具行业 知乎 编辑:程序博客网 时间:2024/06/05 17:39
LR脚本中MD5码获取方案
在类似网关的服务中使用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();
lr_load_dll("md5.dll");
如果这个安全性的做法是基于黑客可以截获数据并加以篡改的假设的。那么他一样可以在篡改了内容之后对篡改后的内容重新计算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();
lr_load_dll("md5.dll");
- LR脚本中MD5码获取方案
- LR系列--LR脚本中动态获取数据库的值作为参数进行处理
- .net中获取MD5码
- LR脚本中Value值的拼接
- LR脚本中连接sql server数据库
- LR脚本回放中出现的问题
- LR中运行QTP脚本的注意事项
- LR中MQ协议交易脚本介绍
- LR脚本中对于中文乱码问题
- .NET中获取字符串的MD5码
- .NET中获取字符串的MD5码
- .NET中获取字符串的MD5码
- .NET中获取字符串的MD5码
- .NET中获取字符串的MD5码
- .NET中获取字符串的MD5码
- .NET中获取字符串的MD5码
- NET中获取字符串的MD5码
- .NET中获取字符串的MD5码
- tools
- 程序员的职业素养
- javascript window.onerror事件
- 向Oracle数据库中插入日期类型
- MPI + vc6配置入门
- LR脚本中MD5码获取方案
- GOP讲解
- linux模块编译与加载
- 【Ext JS 4】组件查找_ComponentQuery类
- HDU1411求四面体体积
- linux学习软件推荐
- 开始使用Fast Models
- 在CSDN博客添加友情链接
- 学习linux后感