欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

jmeter接口測試之使用rsa算法加密解密的代碼

 更新時間:2022年03月21日 10:21:59   作者:大蟲測試  
這篇文章主要介紹了jmeter接口測試-使用rsa加密解密算法,部分接口采用了rsa加密算法,我們的jmeter 也是可以直接拿來調用的,不需要開發(fā)配合去掉加密代碼,需要的朋友可以參考下

本篇介紹jmeter 使用rsa算法進行加密參數

如果測試過程中,部分接口采用了rsa加密算法,我們的jmeter 也是可以直接拿來調用的,不需要開發(fā)配合去掉加密代碼!

直接上代碼

import org.apache.commons.codec.binary.Base64;
import java.io.ByteArrayOutputStream;
import java.security.Key;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Signature;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.HashMap;
import java.util.Map;
import javax.crypto.Cipher;
String RSA_PUB_KEY="MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDNPFO1OaKJbLOH7hVzjj8s+k+spSgG7D2imIpR1ukC3xqgEUYP/vYIiZHXnK04Ddk0ELYee5xDbFfTHSWOK6d2lqK0ydWtLFHCdKpBehM/YKa72zf5KaSJGGgag8EQw4o5ZBS/Ia9w2OxYZ1S94OeRXaA+Z4cy8rBui0hTW9Z0pwIDAQAB";
String KEY_ALGORITHM = "RSA";
String SIGNATURE_ALGORITHM = "MD5withRSA";
int MAX_ENCRYPT_BLOCK = 117;
int MAX_DECRYPT_BLOCK = 128;

public static byte[] decryptByPublicKey(byte[] encryptedData, String publicKey)
            throws Exception {
        byte[] keyBytes = Base64.decodeBase64(publicKey);
        X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(keyBytes);
        KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
        Key publicK = keyFactory.generatePublic(x509KeySpec);
        Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
        cipher.init(Cipher.DECRYPT_MODE, publicK);
        int inputLen = encryptedData.length;
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        int offSet = 0;
        byte[] cache;
        int i = 0;
        // 對數據分段解密
        while (inputLen - offSet > 0) {
            if (inputLen - offSet > MAX_DECRYPT_BLOCK) {
                cache = cipher.doFinal(encryptedData, offSet, MAX_DECRYPT_BLOCK);
            } else {
                cache = cipher.doFinal(encryptedData, offSet, inputLen - offSet);
            }
            out.write(cache, 0, cache.length);
            i++;
            offSet = i * MAX_DECRYPT_BLOCK;
        }
        byte[] decryptedData = out.toByteArray();
        out.close();
        return decryptedData;
    }
    public static byte[] encryptByPublicKey(byte[] data, String publicKey)
            throws Exception {
        byte[] keyBytes = Base64.decodeBase64(publicKey);
        X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(keyBytes);
        KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
        Key publicK = keyFactory.generatePublic(x509KeySpec);
        // 對數據加密
        Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
        cipher.init(Cipher.ENCRYPT_MODE, publicK);
        int inputLen = data.length;
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        int offSet = 0;
        byte[] cache;
        int i = 0;
        // 對數據分段加密
        while (inputLen - offSet > 0) {
            if (inputLen - offSet > MAX_ENCRYPT_BLOCK) {
                cache = cipher.doFinal(data, offSet, MAX_ENCRYPT_BLOCK);
            } else {
                cache = cipher.doFinal(data, offSet, inputLen - offSet);
            }
            out.write(cache, 0, cache.length);
            i++;
            offSet = i * MAX_ENCRYPT_BLOCK;
        }
        byte[] encryptedData = out.toByteArray();
        out.close();
        return encryptedData;
    }
    String str = "idNum=633335199606143151&name=藺四十&phone=17610010005";
String result ="";
try {
    result = Base64.encodeBase64String(encryptByPublicKey(str.getBytes(), RSA_PUB_KEY));
    System.out.println(result);
} catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
print(result);
vars.put("sign",result);
return result;

看運行效果

上述代碼,直接把加密結果放入變量sign中,在其他地方,如果需要調用加密結果,只需要 使用代碼:${sign}即可

import org.apache.commons.codec.binary.Base64;

引入了jmeter包中的類,如果本代碼在jmeter環(huán)境運行,不需要加載第三方jar包
如果在eclipse 或者其他環(huán)境中運行,需要其他base64的類替換,請注意!

到此這篇關于jmeter接口測試-使用rsa加密解密算法的文章就介紹到這了,更多相關jmeter rsa加密解密算法內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • java 用redisTemplate 的 Operations存取list集合操作

    java 用redisTemplate 的 Operations存取list集合操作

    這篇文章主要介紹了java 用redisTemplate 的 Operations存取list集合操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java實例化類詳解

    Java實例化類詳解

    學習JAVA這門面向對象的語言,實質就是不斷地創(chuàng)建類,并把類實例化為對象并調用方法。對于初學JAVA的人總搞清楚對象是如何實例化的,假如類之間存在繼承關系,那就更糊涂了。下面我們通過兩個例題來說明對象的實例化過程。
    2016-03-03
  • SWT(JFace)體驗之Icon任我變

    SWT(JFace)體驗之Icon任我變

    SWT(JFace)體驗之Icon任我變
    2009-06-06
  • SpringBoot基于Minio實現分片上傳、斷點續(xù)傳的實現

    SpringBoot基于Minio實現分片上傳、斷點續(xù)傳的實現

    本文主要介紹了SpringBoot基于Minio實現分片上傳、斷點續(xù)傳的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-08-08
  • JavaWeb中Session對象的學習筆記

    JavaWeb中Session對象的學習筆記

    在WEB開發(fā)中,服務器可以為每個用戶瀏覽器創(chuàng)建一個會話對象,即session對象,這篇文章就為大家詳細介紹Session對象的定義、實現原理等基礎知識點,感興趣的小伙伴們可以參考一下
    2016-05-05
  • 使用Feign遠程調用時,序列化對象失敗的解決

    使用Feign遠程調用時,序列化對象失敗的解決

    這篇文章主要介紹了使用Feign遠程調用時,序列化對象失敗的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • SpringBoot實現接口冪等性的4種方案

    SpringBoot實現接口冪等性的4種方案

    這篇文章主要介紹了SpringBoot實現接口冪等性的4種方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • springboot中如何配置LocalDateTime JSON返回時間戳

    springboot中如何配置LocalDateTime JSON返回時間戳

    這篇文章主要介紹了springboot中如何配置LocalDateTime JSON返回時間戳問題。具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Spring注入Bean的一些方式總結

    Spring注入Bean的一些方式總結

    這篇文章主要給大家總結介紹了關于Spring注入Bean的一些方式,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Spring具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-04-04
  • Springboot項目javax.validation使用方法詳解

    Springboot項目javax.validation使用方法詳解

    這篇文章主要介紹了Springboot項目javax.validation使用方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04

最新評論