chiffrement et déchiffrement jmeter (chiffrement)

Il est arrivé récemment d'obtenir le cryptage et le décryptage jmeter, vous pouvez le partager. (Je ne l'ai pas écrit depuis un moment, je ne sais pas par où commencer, celui-ci est un peu brouillon o (╥﹏╥) o)

L'exigence est la suivante: certains paramètres du corps de la demande dans l'interface de facturation doivent être chiffrés puis demandés, et le résultat renvoyé doit être déchiffré. En un mot, le chiffrement est demandé et le déchiffrement est renvoyé.

1. Tout d'abord, faites-le selon la demande normale.

 

 2. Ensuite, ajoutez le package jar chiffré et déchiffré fourni au test au plan de test. Bien sûr, vous pouvez également placer directement ces packages jar dans le répertoire d'installation de jmeter jmeter \ apache-jmeter-5.1.1 \ lib \ ext afin de ne pas avoir à les ajouter au plan de test. (Le paquet jar n'est parfois pas complet, comment confirmer que votre paquet jar est complet, ce qui suit expliquera)

 

3. Ensuite, créez un nouveau préprocesseur Beanshell sous la demande (facturation). Comme les packages jar que nous avons ajoutés, le préprocesseur Beanshell doit également être importé. L'importation est utilisée ici. (Parce qu'il y a des fichiers de classe dans le package jar, vous ne pouvez pas voir le code réel. Si vous voulez voir la méthode correspondante de chiffrement et de déchiffrement, vous pouvez demander au développeur de développer le fichier java de cette classe de chiffrement et de déchiffrement (RSAUtils))

Le codage Beanshell et Java sont la même logique, mais certains types sont de format différent.

 

4. Ensuite, vous pouvez écrire le code ci-dessous. Selon le fichier RSAUtils.java, il existe deux types de cryptage, le cryptage à clé privée et le cryptage à clé publique, et les décryptages correspondants sont le décryptage à clé privée et le décryptage à clé publique. Une seule explication est utilisée ici, et les exemples utilisés sont le cryptage à clé publique et le décryptage à clé publique.

La méthode de cryptage à clé publique est publicEncrypt (data, publicKey), ce qui signifie que nous devons définir 2 variables: data et publicKey. Les données sont au format json.

 

Commencez par écrire selon l'idée la plus simple. Pour vous assurer que le code du programme de prétraitement du beanshell peut être utilisé normalement, commencez par écrire les valeurs des données et des clés publiques publicKey. (Une chose à noter ici est que json doit être échappé dans le beanshell de jmeter, sinon une erreur sera signalée)

Si json n'est pas échappé, une erreur sera signalée. Par exemple:

String data = "{" cityAreaCode ":" 110100 "," distAreaCode ":" 110119 "," provinceAreaCode ":" 110000 "," templateId ":" 1239454139274485761 "," productId ":" 1245235805219303425 "," insuranceFlag ": 1 , "Insurance": 300, "InsuranceNum": 5.0, "InsuranceValue": "9000"} ";

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

Informations d'erreur dans le journal:

Problème dans le script BeanShell. org.apache.jorphan.util.JMeterException: erreur lors de l'appel de la méthode bsh: eval dans le fichier: évaluation en ligne de: `` import scloudcoreSNAPSHOT. *; import com.ems.gov.cloud.core.util.RSAUtils; importer. . . '' Rencontré "cityAreaCode" à la ligne 13, colonne 18.

 

(Si une partie de la valeur json elle-même a un caractère d'échappement, elle doit être échappée deux fois)

 

5. Dans le fichier RSAUtils.java, vous pouvez voir la méthode de cryptage publicEncrypt (data, publicKey). Ensuite, je veux obtenir le résultat du cryptage, qui est RSAUtils.publicEncrypt (data, publicKey). Ensuite, le code de chiffrement du préprocesseur beanshell est écrit:

 

Imprimez les résultats et voyez ici que le cryptage a réussi.

 

6. Comment attribuer la valeur chiffrée au corps de la demande? Si vous utilisez directement le prétraitement du beanshell pour définir la variable encryptedMsg, exécutez:

 

 

 

Ensuite, nous devons définir une variable globale, mais ici nous devons également faire attention, ne peut pas être défini dans une variable fixe, car la valeur obtenue est vide. Pour le configurer dans le test, je l'ai défini sur sas, beanshell doit également ajouter une ligne de code: vars.put ("sas", encryptMsg); // Attribuer la valeur chiffrée à la variable globale

 

 

 

 

 

Exécution, regardez les résultats: vous pouvez voir que le corps de la requête a obtenu la valeur chiffrée.

 

À ce stade, le cryptage est terminé.

Comment juger si le package du pot est complet:

Ici, je commente tout d'abord une partie des packages et classes jar importés. Après avoir exécuté ce qui suit, vous constaterez que la classe JSONObject et la méthode RSAUtils.publicEncrypt sont introuvables. Parce qu'il a été invité, mais je ne sais pas quels packages JAR sont manquants. Parfois, essayez {} catch () {} a été ajouté, et j'ai constaté qu'il demanderait quelles classes spécifiques sont manquantes, afin que le développement puisse fournir le package jar correspondant ~

 

Après avoir ajouté try {} catch () {}, exécutez-le et découvrez les packages jar manquants:

 

Trouvé que com / baomidou / mybatisplus / toolkit / IOUtils est manquant, laissez le développement exporter le package jar correspondant, en supposant le nom du package jar: mybatisplussup, puis nous devons ajouter ce package jar dans le plan de test, et dans le programme de prétraitement Beanshell, nous devons ajouter 2 Code de ligne: importez mybatisplussupport. *;

import com.baomidou.mybatisplus.toolkit.IOUtils;

Résumé: Le journal affiche les erreurs de compilation, telles que les types de variables et les méthodes manquantes. Il est plus intuitif de voir le problème; essayez {} catch () {} peut renvoyer des classes manquantes et entraîner null.

Je suppose que tu aimes

Origine www.cnblogs.com/lv-lxz/p/12672655.html
conseillé
Classement