jmeter使用beanshell对SHA1WithRSA加密方式进行处理

发布时间 2023-06-29 17:51:12作者: 无锡-小松
import java.nio.charset.StandardCharsets;
import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.Signature;
import java.security.spec.PKCS8EncodedKeySpec;
import java.util.Base64;
import org.apache.commons.codec.digest.DigestUtils;

String stringSign = "需要加密的信息";

String pubencrypt_key = "私钥信息";
//进行加密并且进行2次base64转码
public static String sign(String content, String privateKey) {
    try{
        PKCS8EncodedKeySpec pkcs8 = new PKCS8EncodedKeySpec(Base64.getMimeDecoder().decode(privateKey.getBytes(StandardCharsets.UTF_8)));
        KeyFactory kf = KeyFactory.getInstance("RSA");
        PrivateKey pk = kf.generatePrivate(pkcs8);
        Signature sha1WithRSA = Signature.getInstance("SHA1WithRSA");
        sha1WithRSA.initSign(pk);
        sha1WithRSA.update(content.getBytes(StandardCharsets.UTF_8));
        String sign = Base64.getEncoder().encodeToString(sha1WithRSA.sign());
        return Base64.getEncoder().encodeToString(sign.getBytes());
    }catch(Exception e){
        e.printStackTrace();
    }
    return null;
}

String sign = sign(aeskey,pubencrypt_key);

vars.put("sign",sign);

//log.info("sign = " + sign);