在Jmeter中写入的加密/解密代码出现问题

8aqjt8rx  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(286)

我已经写了一个代码在beanshell加密和解密在Jmeter,但不知何故它不工作。我得到错误:第19行第82列的In file: inline evaluation of: ``import java.security.InvalidAlgorithmParameterException; import java.security.In . . . '' Encountered "}"。我已经在测试计划中添加了加密jar,但问题仍然存在。
附件是代码。
正在工作:
1.我生成一个随机字符串(R1),并使用RSA算法用公钥加密它。
1.使用密钥R1,我需要使用AES算法、CBC模式、PKCS7Padding对请求正文进行加密。

package com.sample.feedbackrating;
        import java.security.InvalidAlgorithmParameterException;
        import java.security.InvalidKeyException;
        import java.security.NoSuchAlgorithmException;
        import java.security.SecureRandom;
        import java.util.Base64;
        import java.util.UUID;
        import javax.crypto.BadPaddingException;
        import javax.crypto.Cipher;
        import javax.crypto.IllegalBlockSizeException;
        import javax.crypto.NoSuchPaddingException;
        import javax.crypto.spec.IvParameterSpec;
        import javax.crypto.spec.SecretKeySpec;

    public class Crypto {

        public static IvParameterSpec generateIv() {
        byte[] iv = new byte[16];
        return new IvParameterSpec(iv);
    }

        public static String encrypt(String algorithm, String input, String secretKey, IvParameterSpec iv) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException

    {
    Cipher cipher = Cipher.getInstance(algorithm);
    cipher.init(Cipher.ENCRYPT_MODE, new 
    SecretKeySpec(secretKey.getBytes(), "AES"), iv);
    byte[] cipherText = cipher.doFinal(input.getBytes());
    return Base64.getEncoder().encodeToString(cipherText);
    }

    public static String decrypt(String algorithm, String cipherText, String secretKey, IvParameterSpec iv) throws NoSuchPaddingException, NoSuchAlgorithmException,InvalidAlgorithmParameterException, InvalidKeyException,BadPaddingException, IllegalBlockSizeException

    {
    Cipher cipher = Cipher.getInstance(algorithm);
    cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(secretKey.getBytes(), "AES"), iv);
    byte[] plainText = cipher.doFinal(Base64.getDecoder().decode(cipherText));
    return new String(plainText);
}

        public static String generateSecretKey() {
            return UUID.randomUUID().toString().replace("-", "");
        }

    }
r1zhe5dt

r1zhe5dt1#

Encountered "}"是一个语法错误,因此请仔细检查您的Beanshell脚本是否可能缺少分号或右括号或其他内容。您可以使用类似于此的在线lint工具来查看问题的确切位置
一般来说,我无法重现您的问题:

因此,这要么是复制粘贴问题,要么是与Beanshell相关的问题,请注意starting from JMeter 3.1 you're supposed to use JSR223 Test Elements and Groovy language for scripting,特别是对于“繁重”的任务,如加密操作。

相关问题