LoadRunner对密码和文本进行编码主要出于两个目的:防止敏感信息在脚本中明文暴露,以及保证数据(特别是中文等非ASCII字符)在传输时编码正确。
LoadRunner编码处理方法:
1. 内置敏感信息屏蔽:防止密码等敏感数据在脚本中明文存储。Password Encoder 工具、lr_unmask()、lr_decrypt(),可逆编码,非高强度加密,主要用于防窥视。
2. 字符编码转换:解决因字符集不一致导致的中文等文本乱码问题。lr_convert_string_encoding(),不涉及加密,是功能性的编码转换。
3. 调用外部加密库:实现MD5、SHA、Base64、SM4等特定加密算法。lr_load_dll() (调用C DLL),或 web_js_run() (调用JS库),真正意义上的加密,安全性取决于所用算法,强度高。
使用内置工具进行敏感信息屏蔽
这是LoadRunner最直接的功能,用于在脚本中隐藏密码、ID等明文。
1. 使用Password Encoder工具
途径:一般在 开始菜单 > Micro Focus (或 HPE) > LoadRunner > Tools > Password Encoder。
步骤:输入明文密码 -> 点击 Generate -> 复制生成的编码字符串 -> 在脚本中粘贴到 lr_unmask("编码字符串") 函数里使用。
注意:该工具在某些系统(如Win7 64位)上可能需要官方补丁才能使用。
2. 在VuGen脚本视图中直接屏蔽文本
步骤:在Script View中选中要屏蔽的文本(不含引号)-> 右键选择 Encrypt string 或 Mask String -> VuGen会自动将其替换为 lr_decrypt("编码字符串") 或 lr_unmask("编码字符串") 格式。
还原:右键点击编码后的字符串,选择 Restore encrypted string 即可恢复明文。
提示:
以上两种方法生成的字符串是可逆的,主要目的是防止脚本被轻易窥视,并不是高强度的安全加密。任何拥有相同LoadRunner环境的人都可以通过反向操作或函数调用解码出原文。如果安全要求极高,应采用下文提到的调用外部加密库的方法。
使用函数进行字符编码转换
当被测系统涉及中文等多字节字符,且出现请求或响应乱码时,需要使用此功能进行编码转换。
重要函数:lr_convert_string_encoding(源字符串, 源编码, 目标编码, "参数名")
情形:将本地字符串(如GBK)转换为UTF-8以适应Web应用。
c
lr_convert_string_encoding("测试数据", LR_ENC_SYSTEM_LOCALE, LR_ENC_UTF8, "str_utf8");
// 转换后,使用 lr_eval_string("{str_utf8}") 获取转换后的字符串内容
技巧:该函数转换后的字符串参数可能包含结束符 \x00,直接作为字符串使用可能导致意外截断。使用 lr_eval_string 将其取出并保存一次:
c
char temp[512];
strcpy(temp, lr_eval_string("{str_utf8}")); // 取出并去除潜在结束符
lr_save_string(temp, "str_for_use"); // 保存为干净可用的新参数
// 之后使用 {str_for_use}
调用外部库实现高强度加密
当需要对接使用MD5、SHA、Base64、SM4等算法加密的接口时,必须扩展LoadRunner的能力。
1. 调用C语言编写的DLL
步骤:将实现加密算法的C代码编译成DLL -> 在脚本中用 lr_load_dll("xxx.dll") 加载 -> 直接调用DLL中的函数。
示例:此方法可用于实现Base64编码。
2. 调用JavaScript加密库(适用于Web/HTTP协议)
情形:现代Web应用的前端常使用JS进行加密(如SM4、AES)。
步骤:
在VuGen的 运行时设置(Run-time Settings) > Internet协议 > 第一选择项 中,启用“运行JavaScript代码”。
将外部JS加密库文件(如sm4.js)导入到VuGen的 解决方案(Solution) > 额外文件(Extra Files) 中。
使用 web_js_run 函数调用JS中的加密方法,并可通过LR.getParam、LR.setParam等TruClient函数和LR脚本交互数据。
总结建议
仅防脚本明文泄露:使用内置的Password Encoder或右键屏蔽功能。
解决中文乱码问题:使用 lr_convert_string_encoding 函数,并注意处理结束符。
对接加密接口:调用外部DLL或JS库,这是唯一安全可靠的加密方式。
版本和兼容性:不同LoadRunner版本(如较新的改用lr_unmask)和操作系统可能影响功能,请以实际环境为准。