jmeterの暗号化と復号化(暗号化)

最近、たまたまjmeterの暗号化と復号化を入手したので、共有できます。(私はしばらく書いていないので、どこから始めればよいかわかりません。これは少し面倒ですo(╥﹏╥)o)

要件は、課金インターフェースのリクエストボディの一部のパラメータを暗号化してからリクエストする必要があり、返された結果を復号化する必要があります。つまり、暗号化がリクエストされ、復号化が返されます。

1.まず、通常の要求に従って作成します。

 

 2.次に、テストに提供された暗号化および復号化されたjarパッケージをテスト計画に追加します。もちろん、これらのjarパッケージをjmeterインストールディレクトリjmeter \ apache-jmeter-5.1.1 \ lib \ extに直接置くこともできるので、テスト計画に追加する必要はありません。(jarパッケージが完全でない場合があります。jarパッケージが完全であることを確認する方法、以下で説明します)

 

3.次に、リクエスト(請求)の下に新しいBeanshellプリプロセッサを作成します。追加したjarパッケージと同様に、Beanshellプリプロセッサもインポートする必要があります。ここではインポートを使用します。(jarパッケージにはクラスファイルがあるため、実際のコードは表示されません。対応する暗号化および復号化の方法を確認したい場合は、開発者に連絡して、この暗号化および復号化クラス(RSAUtils)javaファイルを要求できます)

BeanshellとJavaコーディングは同じロジックですが、一部のタイプは形式が異なります。

 

4.次に、以下のコードを記述します。RSAUtils.javaファイルによると、暗号化には秘密鍵暗号化と公開鍵暗号化の2つのタイプがあり、対応する復号化は秘密鍵復号化と公開鍵復号化です。ここでは1つの説明のみを使用し、使用される例は公開鍵の暗号化と公開鍵の復号化です。

公開鍵の暗号化方式はpublicEncrypt(data、publicKey)です。つまり、dataとpublicKeyの2つの変数を設定する必要があります。データはjson形式です。

 

最初に、最も単純なアイデアに従って書き込みます。BeanShellの前処理プログラムのコードを正常に使用できるようにするには、まずデータの値とpublicKey公開鍵の値を書き込みます。(ここで注意すべきことの1つは、jsonをjmeterのbeanshellでエスケープする必要があることです。それ以外の場合、エラーが報告されます)

jsonがエスケープされていない場合、エラーが報告されます。たとえば、次のとおりです。

文字列データ= "{" cityAreaCode ":" 110100 "、" distAreaCode ":" 110119 "、" provinceAreaCode ":" 110000 "、" templateId ":" 1239454139274485761 "、" productId ":" 1245235805219303425 "、" insuranceFlag ":1 、 "insurance":300、 "insuranceNum":5.0、 "insuranceValue": "9000"} ";

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

ログのエラー情報:

BeanShellスクリプトの問題。org.apache.jorphan.util.JMeterException:bshメソッドの呼び出しエラー:evalファイル:インライン評価: `` import scloudcoreSNAPSHOT。*; import com.ems.gov.cloud.core.util.RSAUtils; インポートします。''行13、列18で「cityAreaCode」に遭遇しました。

 

(json値自体の一部にエスケープ文字がある場合、2回エスケープする必要があります)

 

5. RSAUtils.javaファイルから、暗号化メソッドpublicEncrypt(data、publicKey)を確認できます。次に、RSAUtils.publicEncrypt(data、publicKey)である暗号化結果を取得します。次に、beanshellプリプロセッサの暗号化コードが記述されます。

 

結果を印刷して、暗号化が成功したことを確認してください。

 

6.暗号化された値をリクエスト本文にどのように提供しますか?beanshell前処理を直接使用して、encryptedMsg変数を定義する場合は、以下を実行します。

 

 

 

次に、グローバル変数を定義する必要がありますが、ここでも注意が必要です。取得した値が空であるため、固定変数には設定できません。テストで設定するには、sasに設定​​します。beanshellもコード行を追加する必要があります:vars.put( "sas"、encryptMsg); //暗号化された値をグローバル変数に割り当てます

 

 

 

 

 

実行して結果を確認します。リクエストの本文が暗号化された値を取得したことがわかります。

 

この時点で、暗号化は完了です。

jarパッケージが完全かどうかを判断する方法:

ここではまず、インポートしたjarパッケージとクラスの一部をコメントアウトします。以下を実行すると、JSONObjectクラスとRSAUtils.publicEncryptメソッドが見つからないことがわかります。プロンプトが出されましたが、どのjarパッケージが欠落しているのかわかりません。たまに、try {} catch(){}が追加されたため、欠落している特定のクラスが表示されるため、開発で対応するjarパッケージを提供できることがわかりました〜

 

try {} catch(){}を追加した後、それを実行して、不足しているjarパッケージを見つけます。

 

com / baomidou / mybatisplus / toolkit / IOUtilsが欠落していることが判明しました。対応するjarパッケージを開発にエクスポートします。jarパッケージ名はmybatisplussupとします。次に、このjarパッケージをテスト計画に追加し、beanshell前処理プログラムに2を追加する必要があります。行コード:mybatisplussupportをインポートします。

インポートcom.baomidou.mybatisplus.toolkit.IOUtils;

概要:ログには、変数の型やメソッドの不足などのコンパイルエラーが表示されます。問題を確認する方が直感的です。{} catch()を試してみてください{}が不足しているクラスをスローし、結果としてnullになる可能性があります。

おすすめ

転載: www.cnblogs.com/lv-lxz/p/12672655.html