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.
    

      

  • 相关阅读:
    Linux编程 22 shell编程(输出和输入重定向,管道,数学运算命令,退出脚本状态码)
    mysql 开发进阶篇系列 46 物理备份与恢复( xtrabackup的 选项说明,增加备份用户,完全备份案例)
    mysql 开发进阶篇系列 45 物理备份与恢复(xtrabackup 安装,用户权限,配置)
    mysql 开发进阶篇系列 44 物理备份与恢复( 热备份xtrabackup 工具介绍)
    Linux编程 21 shell编程(环境变量,用户变量,命令替换)
    Linux编程 20 shell编程(shell脚本创建,echo显示信息)
    mysql 开发进阶篇系列 43 逻辑备份与恢复(mysqldump 的基于时间和位置的不完全恢复)
    Linux编程 19 编辑器(vim 用法)
    (网页)angularjs中的interval定时执行功能(转)
    (网页)在SQL Server中为什么不建议使用Not In子查询(转)
  • 原文地址:https://www.cnblogs.com/wzl0916/p/13202719.html
Copyright © 2011-2022 走看看