zoukankan      html  css  js  c++  java
  • 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='';
    }

    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):'';
            *(dest++)=(c4!=64)?((c3&0x3)<<0x6|c4&0x3F):'';
        }
        *dest='';
    }

    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.
    

      

  • 相关阅读:
    最挑战程序员的9大任务,你都干过哪些?
    最挑战程序员的9大任务,你都干过哪些?
    .NET版开源日志框架Log4Net详解
    .NET版开源日志框架Log4Net详解
    .NET版开源日志框架Log4Net详解
    IT人永远不老,老程序员价值何在?
    IT人永远不老,老程序员价值何在?
    IT人永远不老,老程序员价值何在?
    JS 对象封装的常用方式
    JS 对象封装的常用方式
  • 原文地址:https://www.cnblogs.com/wzl0916/p/13202719.html
Copyright © 2011-2022 走看看