我已经写了一个代码在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("-", "");
}
}
1条答案
按热度按时间r1zhe5dt1#
Encountered "}"
是一个语法错误,因此请仔细检查您的Beanshell脚本是否可能缺少分号或右括号或其他内容。您可以使用类似于此的在线lint工具来查看问题的确切位置一般来说,我无法重现您的问题:
因此,这要么是复制粘贴问题,要么是与Beanshell相关的问题,请注意starting from JMeter 3.1 you're supposed to use JSR223 Test Elements and Groovy language for scripting,特别是对于“繁重”的任务,如加密操作。