51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2421|回复: 6
打印 上一主题 下一主题

[原创] 如何算取HASHCODE值

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-5-7 14:56:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在使用LR性能测试的过程中,有一个网页需要根据用户登陆的时间,IP值算出一个挑战值.

然后再用一个算号器算出一个密码,输入后即可正常登陆系统.

例如,挑战值是117851010540600   那算号器算出来的密码应该是 -396694025

这个算号器是JAVA算出来的.

String testString = new String("117851010540600");
String pwd = testString.hashCode(testString);

经过查找hashCode方法的源代码.用JAVA还原出来就是:

public static int getHashCode(String s){
       int hash = 0;      
       int off = 0;
       char val[]= s.toCharArray();
        int len = s.length();
        for (int i = 0; i < len; i++) {
            hash = 31*hash + val[off++];
        }
        return hash;
    }

遇到一个问题,在LR中,用WEB_REG_SAVE_PARAM可以得到117851010540600
但是没办法进行HASH的计算.因为LR的脚本是基于C的.int的长度不够,算出来的值不对.

哪位知道怎么处理好一点,不想使用基于JAVA的脚本呀.

[ 本帖最后由 yhmin 于 2007-5-7 15:33 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-5-7 16:45:39 | 只看该作者
把 int 类型转换为字符串 (string) 类型试试
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2007-5-7 16:51:10 | 只看该作者
但是要做四则运算的呀
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2007-5-8 10:54:31 | 只看该作者
这样可以吗?
Action()
{
        char mystr[15] = "117851010540600";
        int pwd;
        pwd = getHashCode(mystr);
        lr_message("pwd %10d",pwd);
        free(mystr);
        return 0;
}
int getHashCode(char str[]){
        int hash = 0;
        int off = 0;
        int len = strlen(str);
        int i;
        for(i = 0 ; i < len ; i++){
                hash = 31*hash + str[off++];
        }
        return hash;
}

结果:
Virtual User Script started
Starting action vuser_init.
Ending action vuser_init.
Running Vuser...
Starting iteration 1.
Starting action Action.
pwd -396694025
Ending action Action.
Ending iteration 1.
Ending Vuser...
Starting action vuser_end.
Ending action vuser_end.
Vuser Terminated.

[ 本帖最后由 selon 于 2007-5-8 11:18 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2007-5-8 10:59:36 | 只看该作者
不想用Java的脚本,就把这段java代码用c重写就可以了啊,呵呵

不过别问我怎么写,我对c不熟,sdlkfj1
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2007-5-8 11:30:39 | 只看该作者
总觉得在LR里写这个东东有点不伦不类
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2007-5-8 13:45:36 | 只看该作者
谢谢楼上几位给出的好的建议(甚至代码),问题已经解决.现在脚本已经很好的跑起来了.哈哈

还是因为对C不熟悉,所以当时没能搞定,也有一部分是当局者迷的原因.

问题可能就出在"10d"这个东东上面. 格式,格式.真的要好好复习一下谭浩强老师的C语言教材了.
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-12 20:18 , Processed in 0.068425 second(s), 30 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表