LR十:MD5接口解密操作_接口签名校验

很多HTTP接口在传参时,需要先对接口的参数进行数据签名加密
如以下POST接口

http://localhost:8080/pinter/com/userInfo

参数为
{"phoneNum":"123434","optCode":"testfan","timestamp":"1211212","sign":"fdsfdsaafsasfas"}

其中,sign字段是按照特定算法进行加密后的数据
本接口的签名算法为
sign=Md5(phoneNum+ optCode+ timestamp)

签名过程中涉及到的C语言函数
字符串拼接
char str[50];
strcat(str,"testfan");
保存当前时间戳:web_save_timestamp_param("tStamp", LAST );

 

注意 引入 md5.h 文件进行算法解密

 

 1 Action()
 2 {
 3 //定义 字符串类型
 4     char cat[50];
 5 
 6     
 7     web_reg_find("Search=Body",
 8         "SaveCount=find_cnt",
 9         "Text=code\":\"0\"",
10         LAST);
11 
12 
13 
14     web_save_timestamp_param("tStamp", LAST );
15 
16 //拼接 在一起
17     strcat(cat, lr_eval_string("135{phoneNum}"));
18     strcat(cat, "testfan");
19     strcat(cat, lr_eval_string("{tStamp}"));
20 
21 //CMd5 是调用的 MD5.h 这个文件中的 函数进行md5 解码的
22     lr_save_string(CMd5(cat), "singMd5");
23 
24     lr_output_message("==============================%s",CMd5(cat));
25 
26 
27 
28 
29     web_add_header("Content-type", "application/json");
30 
31     
32     lr_start_transaction("singmd5");
33 
34 
35     web_custom_request("post", "Method=POST", 
36 
37         "URL=http://localhost:8080/pinter/com/userInfo", 
38 
39         "Body={\"phoneNum\":\"135{phoneNum}\",\"optCode\":\"testfan\",\"timestamp\":\"{tStamp}\",\"sign\":\"{singMd5}\"}", 
40 
41         "TargetFrame=", 
42 
43         LAST );
44 
45     if(atoi(lr_eval_string("{find_cnt}")) > 0 ){
46         lr_end_transaction("singmd5", LR_PASS);
47 
48     }else{
49         
50         lr_end_transaction("singmd5", LR_FAIL);
51 
52     }
53     
54 
55 
56 
57     return 0;
58 }

 

 

运行日志如下:

 1 Virtual User Script started at : 2019-03-16 19:37:16
 2 Starting action vuser_init.
 3 Web Turbo Replay of LoadRunner 11.0.0 for WINXP; build 8859 (Aug 18 2010 20:14:31)      [MsgId: MMSG-27143]
 4 Run Mode: HTML      [MsgId: MMSG-26000]
 5 Run-Time Settings file: "C:\test_huzhenyu\Script\singn\\default.cfg"      [MsgId: MMSG-27141]
 6 Ending action vuser_init.
 7 Running Vuser...
 8 Starting iteration 1.
 9 Starting action Action.
10 Action.c(7): Registering web_reg_find was successful      [MsgId: MMSG-26390]
11 Action.c(14): Notify: Saving Parameter "tStamp = 1552736236160".
12 Action.c(14): web_save_timestamp_param("web_save_timestamp_param") was successful      [MsgId: MMSG-26392]
13 Action.c(17): Notify: Parameter Substitution: parameter "phoneNum" =  "12662118"
14 Action.c(19): Notify: Parameter Substitution: parameter "tStamp" =  "1552736236160"
15 Action.c(21): Notify: Saving Parameter "singMd5 = b7f1b1f74de61497d65fd0027b8166fc".
16 Action.c(23): ==============================b7f1b1f74de61497d65fd0027b8166fc
17 Action.c(28): Warning -26593: The header being added may cause unpredictable results when applied to all ensuing URLs. It is added anyway      [MsgId: MWAR-26593]
18 Action.c(28): web_add_header("Content-type") highest severity level was "warning"      [MsgId: MMSG-26391]
19 Action.c(31): Notify: Transaction "singmd5" started.
20 Action.c(34): Notify: Parameter Substitution: parameter "phoneNum" =  "12662118"
21 Action.c(34): Notify: Parameter Substitution: parameter "tStamp" =  "1552736236160"
22 Action.c(34): Notify: Parameter Substitution: parameter "singMd5" =  "b7f1b1f74de61497d65fd0027b8166fc"
23 Action.c(34): t=1018ms: 128-byte response headers for "http://localhost:8080/pinter/com/userInfo" (RelFrameId=1, Internal ID=1)
24 Action.c(34):     HTTP/1.1 200 \r\n
25 Action.c(34):     Content-Type: application/json;charset=UTF-8\r\n
26 Action.c(34):     Transfer-Encoding: chunked\r\n
27 Action.c(34):     Date: Sat, 16 Mar 2019 11:37:16 GMT\r\n
28 Action.c(34):     \r\n
29 Action.c(34): t=1061ms: 5-byte chunked response overhead for "http://localhost:8080/pinter/com/userInfo" (RelFrameId=1, Internal ID=1)
30 Action.c(34):     12a\r\n
31 Action.c(34): t=1068ms: 2-byte chunked response overhead for "http://localhost:8080/pinter/com/userInfo" (RelFrameId=1, Internal ID=1)
32 Action.c(34):     \r\n
33 Action.c(34): t=1077ms: 298-byte chunked response body for "http://localhost:8080/pinter/com/userInfo" (RelFrameId=1, Internal ID=1)
34 Action.c(34):     {"code":"0","message":"success","data":{"id":3607,"userName":"鎬ц兘娴嬭瘯","password":nul
35 Action.c(34):     l,"age":55,"gender":1,"phoneNum":"13512662118","email":"beihe@testfan.com","address":"鍖椾
36 Action.c(34):     含甯傛槍骞冲尯绉戞槦瑗胯矾106鍙烽櫌锛堝浗椋庣編鍞愯姳鍥患鍚堟ゼ锛\x893鍙锋ゼ1111","creat
37 Action.c(34):     eTime":null,"updateTime":null}}
38 Action.c(34): HTML parsing not performed for Content-Type "application/json" ("ParseHtmlContentType" Run-Time Setting is "TEXT"). URL="http://localhost:8080/pinter/com/userInfo"      [MsgId: MMSG-26548]
39 Action.c(34): t=1122ms: 5-byte chunked response overhead for "http://localhost:8080/pinter/com/userInfo" (RelFrameId=1, Internal ID=1)
40 Action.c(34):     0\r\n
41 Action.c(34):     \r\n
42 Action.c(34): Registered web_reg_find successful for "Text=code":"0"" (count=1)      [MsgId: MMSG-26364]
43 Action.c(34): Notify: Saving Parameter "find_cnt = 1".
44 Action.c(34): web_custom_request("post") was successful, 298 body bytes, 128 header bytes, 12 chunking overhead bytes      [MsgId: MMSG-26385]
45 Action.c(44): Notify: Parameter Substitution: parameter "find_cnt" =  "1"
46 Action.c(45): Notify: Transaction "singmd5" ended with "Pass" status (Duration: 0.7485 Wasted Time: 0.4988).
47 Ending action Action.
48 Ending iteration 1.
49 Ending Vuser...
50 Starting action vuser_end.
51 Ending action vuser_end.
52 Vuser Terminated.
View Code

 

posted @ 2019-03-16 19:48  测试艺术家  阅读(1032)  评论(0编辑  收藏  举报