在工作中,有时候我们会遇到登录密码加密的接口,有用MD5加密,也有用AES加密。MD5加密一般用jmeter自带的函数助手就能完成,下面讲的是AES加密。废话不多说,直接教程。
要处理AES加密接口,首先要了解AES加密的机制。一般来说,AES加密有三个部分组成:
第一个就是加密的模式(ECB,CBC,CFB,CTP等)。
第二个就是补码方式(Pkcs5padding,Zeropadding等)。
第三个就是密钥,也就是key。
这三个部分都是开发自定义写好,我们到时候直接询问开发即可。我下面的登录登录接口采用的是AES/ECB/Zeropadding(算法/加密模式/补码方式),key是16个9。
那么如何用jmeter完成这个加密接口的请求呢?首先因为算法是开发编写的,所以我们测试人员可以先让开发提供加密写法的jar包(其实就是java代码一些类和方法),然后告诉我们使用加密的方法名是什么,最后在jmeter中导入jar包完成接口请求。
首先在打开jmeter,在测试计划内导入加密的jar包,如下:
导入成功后,我们添加线程组,登录的请求,然后在登录的请求下添加一个前置处理器-BeanShell PreProcessor,接下来只要写几行简单的代码就可以实现加密了,如下:
在写之前了,我们先了解一下开发的jar包的方法进行了解,下图就是导入了AesUtil类(开发已经封装好了),然后使用encrypBase64方法名对明文进行加密,并传输了两个参数,一个是需要的加密明文,一个是加密的key(16个9),如下:
了解上图之后了,我们在BeanShell PreProcessor开始编写代码,首先导入加密的类,然后使用类方法开始加密,最后传给系统变量,如下:
最后,我们只需要在登录请求的密码参数值,引用变量${pword}传输即可,如下: 最后查看结果树,加密成功,响应也正确了,如下:最后做一下步骤总结:
找到开发要加密的jar包(不要怕直接要,他们会给的),然后在测试计划内导入jar包。
在登录的请求下添加前置处理器-BeanShell PreProcessor,编写代码:导入加密jar包的类,然后使用加密类方法对明文进行加密,最后使用vars.put()方法传递给jmeter系统变量中。
最好在登录请求内的密码参数中,值用${变量名}引用进行发送请求即可。