cifrado y descifrado jmeter (cifrado)

Acabo de obtener el cifrado y descifrado de jmeter recientemente, puedes compartirlo. (No lo he escrito por un tiempo, no sé por dónde empezar, este es un poco desordenado o (╥﹏╥) o)

El requisito es: algunos parámetros del cuerpo de la solicitud en la interfaz de carga deben cifrarse y luego solicitarse, y el resultado devuelto debe descifrarse. En una palabra, se solicita el cifrado y se devuelve el descifrado.

1. En primer lugar, hágalo de acuerdo con la solicitud normal.

 

 2. Luego, agregue el paquete jar cifrado y descifrado proporcionado a la prueba al plan de prueba. Por supuesto, también puede colocar directamente estos paquetes jar en el directorio de instalación de jmeter jmeter \ apache-jmeter-5.1.1 \ lib \ ext para que no necesite agregarlos al plan de prueba. (El paquete jar a veces no está completo, cómo confirmar que su paquete jar está completo, lo siguiente explicará)

 

3. Luego, cree un nuevo preprocesador de Beanshell bajo la solicitud (facturación). Al igual que los paquetes jar que agregamos, también es necesario importar el preprocesador de Beanshell. Aquí se usa la importación. (Debido a que hay archivos de clase en el paquete jar, no puede ver el código real. Si desea ver el método correspondiente de cifrado y descifrado, puede hablar con el desarrollador para solicitar este archivo java de clase de cifrado y descifrado (RSAUtils))

Beanshell y la codificación Java son la misma lógica, pero algunos tipos tienen un formato diferente.

 

4. Luego, puede escribir el código a continuación. Según el archivo RSAUtils.java, hay dos tipos de cifrado, cifrado de clave privada y cifrado de clave pública, y los descifrados correspondientes son descifrado de clave privada y descifrado de clave pública. Aquí solo se usa una explicación, y los ejemplos utilizados son el cifrado de clave pública y el descifrado de clave pública.

El método de cifrado de clave pública es publicEncrypt (data, publicKey), lo que significa que necesitamos establecer 2 variables: data y publicKey. Los datos están en formato json.

 

Primero escriba de acuerdo con la idea más simple: para garantizar que el código en el programa de preprocesamiento de beanshell se pueda usar normalmente, primero escriba los valores de los datos y las claves públicas publicKey. (Una cosa a tener en cuenta aquí es que json debe escaparse en el beanhell de jmeter, de lo contrario se informará un error)

Si no se escapa json, se informará un error. Por ejemplo:

Datos de cadena = "{" cityAreaCode ":" 110100 "," distAreaCode ":" 110119 "," provinceAreaCode ":" 110000 "," templateId ":" 1239454139274485761 "," productId ":" 1245235805219303425 "," insuranceFlag ": 1 , "seguro": 300, "insuranceNum": 5.0, "insuranceValue": "9000"} ";

System.out.println ("json :" + datos); // 打印

Información de error en el registro:

Problema en el script BeanShell. org.apache.jorphan.util.JMeterException: Error al invocar el método bsh: eval In file: evaluación en línea de: `` import scloudcoreSNAPSHOT. *; import com.ems.gov.cloud.core.util.RSAUtils; importación . . '' Encontró "cityAreaCode" en la línea 13, columna 18.

 

(Si parte del valor json en sí tiene un carácter de escape, se debe escapar dos veces)

 

5. Desde el archivo RSAUtils.java, puede ver el método de cifrado publicEncrypt (data, publicKey). Luego quiero obtener el resultado del cifrado, que es RSAUtils.publicEncrypt (data, publicKey). Luego se escribe el código de cifrado del preprocesador de beanshell:

 

Imprima los resultados y vea aquí que el cifrado ha sido exitoso.

 

6. ¿Cómo le damos el valor cifrado al cuerpo de la solicitud? Si usa directamente el preprocesamiento de beanshell para definir la variable encryptedMsg, ejecute:

 

 

 

Entonces necesitamos definir una variable global, pero aquí también debemos prestar atención, no se puede establecer en una variable fija, porque el valor obtenido está vacío. Para configurarlo en la prueba, lo configuré en sas, beanshell también necesita agregar una línea de código: vars.put ("sas", encryptMsg); // Asignar el valor cifrado a la variable global

 

 

 

 

 

Ejecución, observe los resultados: puede ver que el cuerpo de la solicitud ha obtenido el valor cifrado.

 

En este punto, el cifrado está completo.

Cómo juzgar si el paquete jar está completo:

Aquí primero comento una parte de los paquetes y clases jar importados. Después de ejecutar lo siguiente, encontrará que la clase JSONObject y el método RSAUtils.publicEncrypt no se encuentran. Porque se le solicitó, pero no sé qué paquetes jar faltan. Ocasionalmente, se agregó {} catch () {}, y descubrí que indicaría qué clases específicas faltan, de modo que el desarrollo pueda proporcionar el paquete jar correspondiente ~

 

Después de agregar try {} catch () {}, ejecútelo y descubra qué paquetes jar faltan:

 

Descubrimos que falta com / baomidou / mybatisplus / toolkit / IOUtils, deje que el desarrollo exporte el paquete jar correspondiente, suponiendo el nombre del paquete jar: mybatisplussup, luego debemos agregar este paquete jar en el plan de prueba y agregar 2 Código de línea: import mybatisplussupport. *;

import com.baomidou.mybatisplus.toolkit.IOUtils;

Resumen: El registro muestra errores de compilación, como tipos de variables y métodos faltantes. Es más intuitivo ver el problema; intente {} catch () {} puede arrojar clases faltantes y resultar en nulo.

Supongo que te gusta

Origin www.cnblogs.com/lv-lxz/p/12672655.html
Recomendado
Clasificación