LoadRunner中Base64编码解码

参考地址:

https://www.cnblogs.com/preftest/archive/2011/06/12/2079178.html

在测试系统中,有些系统用户登录信息采用了base64进行编码,测试脚本里面,就需要对用户账号和密码进行编码处理,下面介绍一下LoadRunner中base64的编码和解码方法;

1、新建base64.h文件

base64.h文件用于编写base64编码和解码的方法,具体内容如下:

static unsigned char base64encode_lut[] ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";// 编译字符表

char base64decode_lut[] = {// 解释字符表
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0,62, 0, 0, 0,63,52,53,54,55,56,57,58,59,60,61, 0, 0,
    0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,
    15,16,17,18,19,20,21,22,23,24,25, 0, 0, 0, 0, 0, 0,26,27,28,
    29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,
    49,50,51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, };

void base64encode(char *src, char *dest, int len){// 执行Base64编码
    int i=0, slen=strlen(src);
    for(i=0;i<slen && i<len;i+=3,src+=3) {
        *(dest++)=base64encode_lut[(*src&0xFC)>>0x2];
        *(dest++)=base64encode_lut[(*src&0x3)<<0x4|(*(src+1)&0xF0)>>0x4];
        *(dest++)=((i+1)<slen)?base64encode_lut[(*(src+1)&0xF)<<0x2|(*(src+2)&0xC0)>>0x6]:'=';
        *(dest++)=((i+2)<slen)?base64encode_lut[*(src+2)&0x3F]:'=';
    }
    *dest='\0';
}

void base64decode(char *src, char *dest, int len){// 执行Base64解码
    int i=0, slen=strlen(src);
    for(i=0;i<slen&&i<len;i+=4,src+=4) {
        char c1=base64decode_lut[*src], c2=base64decode_lut[*(src+1)], c3=base64decode_lut[*(src+2)], c4=base64decode_lut[*(src+3)];
        *(dest++)=(c1&0x3F)<<0x2|(c2&0x30)>>0x4;
        *(dest++)=(c3!=64)?((c2&0xF)<<0x4|(c3&0x3C)>>0x2):'\0';
        *(dest++)=(c4!=64)?((c3&0x3)<<0x6|c4&0x3F):'\0';
    }
    *dest='\0';
}

int b64_encode_string( char *source, char *lrvar ){// 对字符串进行base64编译
    int dest_size;
    int res;
    char *dest;
    dest_size = 1 + ((strlen(source)+2)/3*4);
    dest = (char *)malloc(dest_size);
    memset(dest,0,dest_size);
    base64encode(source, dest, dest_size);
    lr_save_string( dest, lrvar );
    res = strlen(dest);
    free(dest);
    return res;
}

int b64_decode_string( char *source, char *lrvar ){// 解码base64字符串
    int dest_size;
    int res;
    char *dest;
    dest_size = strlen(source);
    dest = (char *)malloc(dest_size);
    memset(dest,0,dest_size);
    base64decode(source, dest, dest_size);
    lr_save_string( dest, lrvar );
    res = strlen(dest);
    free(dest);
    return res;
}

2、新建loadrunner脚本

  右键选中globals.h,点击【add files to script】,添加base64.h文件到脚本中;

3、编辑globals.h

  打开globals.h,添加头文件:

  #include "base64.h" 

4、编辑action脚本

  打开action,编辑编码解码脚本,脚本内容如下: 

Action()
{
	lr_save_string("13111110001","Plain");

	//base64加密
	b64_encode_string(lr_eval_string("{Plain}"),"B64str");
	lr_output_message("Base64编码结果:%s",lr_eval_string("{B64str}"));

	//base64解密
	b64_decode_string(lr_eval_string("{B64str}"),"Plain2");
	lr_output_message("Base64解码结果:%s",lr_eval_string("{Plain2}"));

	return 0;
}

5、编译执行脚本

  编译执行脚本,执行结果如下;  

Starting iteration 1.
Starting action Action.
Action.c(7): Base64编码结果:MTMxMTExMTAwMDE=/
Action.c(11): Base64解码结果:13111110001
Ending action Action.
Ending iteration 1.

  

 

posted @ 2020-06-28 14:35  雨后的太阳  阅读(683)  评论(0编辑  收藏  举报