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.
    

      

  • 相关阅读:
    paip.关于动画特效原理 html js 框架总结
    paip.utf-8,unicode编码的本质输出unicode文件原理 python
    paip.多维理念 输入法的外码输入理论跟文字输出类型精髓
    paip.前端加载时间分析之道优化最佳实践
    paip.输入法编程--英文ati化By音标原理与中文atiEn处理流程 python 代码为例
    paip.导入数据英文音标到数据库mysql为空的问题之道解决原理
    paip.元数据驱动的转换-读取文件行到个list理念 uapi java php python总结
    paip.python3 的类使用跟python2 的不同之处
    paip.日志中文编码原理问题本质解决python
    paip.性能跟踪profile原理与架构与本质-- python扫带java php
  • 原文地址:https://www.cnblogs.com/wzl0916/p/13202719.html
Copyright © 2011-2022 走看看