首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Jmeter使用CBC加密AES 128

在JMeter中实现CBC模式的AES 128位加密可以通过使用JSR223 Sampler或JSR223 PreProcessor/PostProcessor来完成。这些组件允许你在JMeter测试计划中嵌入自定义脚本。你可以使用Groovy语言来编写脚本,因为Groovy与Java兼容,且执行效率高。

下面是一个使用Groovy在JMeter中实现AES 128位CBC加密的示例步骤:

步骤 1: 添加 JSR223 Sampler

  1. 在JMeter中打开或创建一个测试计划。
  2. 右键点击测试计划中的线程组,选择“添加” -> “Sampler” -> “JSR223 Sampler”。

步骤 2: 编写加密脚本

在JSR223 Sampler的脚本区域中,输入以下Groovy脚本:

代码语言:javascript
复制
import javax.crypto.Cipher
import javax.crypto.spec.SecretKeySpec
import javax.crypto.spec.IvParameterSpec
import org.apache.commons.codec.binary.Base64

// 初始化密钥和IV(初始化向量)
String key = "1234567890123456" // 16字节的密钥
String initVector = "RandomInitVector" // 16字节的IV

byte[] keyBytes = key.getBytes("UTF-8")
byte[] ivBytes = initVector.getBytes("UTF-8")

SecretKeySpec secretKeySpec = new SecretKeySpec(keyBytes, "AES")
IvParameterSpec ivParameterSpec = new IvParameterSpec(ivBytes)

// 创建Cipher实例
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING")
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivParameterSpec)

// 待加密的字符串
String originalString = "Hello, World!"

// 加密
byte[] encrypted = cipher.doFinal(originalString.getBytes())
String base64Encrypted = Base64.encodeBase64String(encrypted)

// 输出加密结果
println("Encrypted (Base64): " + base64Encrypted)

步骤 3: 运行和验证

  1. 确保你的测试计划配置正确,例如添加了监听器来查看结果。
  2. 运行测试计划。
  3. 查看JSR223 Sampler的输出,确认加密操作是否成功。

注意事项

  • 密钥和IV的安全性:在实际应用中,密钥和初始化向量(IV)应该安全生成并存储,避免硬编码在脚本中。
  • 错误处理:上述脚本没有进行错误处理。在生产环境中,应添加适当的错误处理逻辑来确保脚本的健壮性。
  • 性能考虑:在高负载测试中,加密操作可能会显著影响性能。进行性能测试时,应评估加密操作的影响。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C#实现微信AES-128-CBC加密数据的解密

而有用的数据,都加密着,腾讯给出了解密的方法: 加密数据解密算法 接口如果涉及敏感数据(如wx.getUserInfo当中的 openId 和unionId ),接口的明文内容将不包含这些敏感数据。...开发者如需要获取敏感数据,需要对接口返回的加密数据( encryptedData )进行对称解密。 解密算法如下: 对称解密使用的算法为 AES-128-CBC,数据采用PKCS#7填充。...在网上找C#的AES-128-CBC算法,就没有一个好用的,下载下来半天调不通,看看nodejs和python的代码,简单到令人发指,顿时让我的信心再次遭受打击。 ?...python实在不值得,咬牙继续研究.Net下的解密,最有用的来自csdn,感谢作者 http://download.csdn.net/detail/u010331683/5798913 但是,还是无法正常使用...Convert.FromBase64String(AesIV);// Encoding.UTF8.GetBytes(AesIV); rijndaelCipher.Mode = CipherMode.CBC

3.3K90

AES高级加密的工作模式(ECB、CBC、CFB、OFB)

它是一种分组加密标准,每个加密块大小为128位,允许的密钥长度为128、192和256位。...ECB模式(电子密码本模式:Electronic codebook) ECB是最简单的块密码加密模式,加密前根据加密块大小(如AES128位)分成若干块,之后将每块使用相同的密钥单独加密,解密同理。...CBC模式(密码分组链接:Cipher-block chaining) CBC模式对于每个待加密的密码块在加密前会先与前一个密码块的密文异或然后再用加密加密。...CFB8的加密流程 使用加密加密IV的数据; 将明文的最高8位与IV的最高8位异或得到8位密文; 将IV数据左移8位,最低8位用刚刚计算得到的8位密文补上。 重复1到3。...这两个函数的参数和AES_cfb128_encrypt完全一样,但num和length含义略有不同。

4.4K20

nodejs使用aes-128-ecb加密如何在c#中解密

= this.app.config.jwt.key // 唯一(公共)秘钥 const cipher = crypto.createCipher('aes-128-ecb', secretkey...) // 使用aes128加密 let enc = cipher.update(content, 'utf8', 'hex') // 编码方式从utf-8转为hex; enc += cipher.final...('hex')// 编码方式转为hex; return enc } } 却发现C#端怎么也解密不了,一直报错,改了一整天,后来终于发现,nodejs端加密用的key其实在使用之前已经使用md5...加密了一次,而这个操作是默认的,暂时没发现有配置可以默认去掉,服务端如果需要使用这个key解密,则需要也同样使用MD5加密 public static string AesDecrypt(string...content, string key) { // nodejs aes加密默认的key使用了md5加密,所以C#解密的key也要默认使用md5

2.5K20

PHP实现的AES 128加密算法示例

本文实例讲述了PHP实现的AES 128加密算法。分享给大家供大家参考,具体如下: /* 加密算法一般分为两种:对称加密算法和非对称加密算法。...对称加密 对称加密算法是消息发送者和接收者使用同一个密匙,发送者使用密匙加密了文件, 接收者使用同样的密匙解密,获取信息。常见的对称加密算法有:des/aes/3des....()得到 验签函数:与签名函数相对,只不过它要传入与私匙对应的公匙;其结果为签名验证结果,1为成功,0为失败,-1则表示错误; * */ /* * 基于百度云API的例子 * 密码一律采用AES 128...位加密算法进行加密,用SK的前16位作为密钥, * 加密后生成的二进制字节流需要转成十六进制,并以字符串的形式传到服务端 * */ function aes128WithFirst16Char($adminPass...加密 $crypted = openssl_encrypt($adminPass, 'AES-128-ECB', $secretAccessKey, OPENSSL_RAW_DATA); //把字符串转换为

1.7K21

使用AES进行文件加密算法

使用AES进行文件加密算法 前言:最近想对手机上一些文件进行加密隐藏,想自己基于jvm平台写一个(kotlin/java)但是网上的加密算法都是不公开的,所以自己利用AES的算法整出了一个文件加密解密的工具...千万不可以使用多线程来同时加密/解密多个文件 */class FileEncoder(passwd: String,val debug: Boolean = true, bufferSize: Int...规则初始化密钥生成器 //生成一个128位的随机源,根据传入的字节数组 keygen.init(128, SecureRandom(encodeRules.toByteArray...//7.初始化密码器,第一个参数为加密(Encrypt_mode)或者解密解密(Decrypt_mode)操作,第二个参数为使用的KEY encodeCipher.init...(Cipher.ENCRYPT_MODE, key) //7.初始化密码器,第一个参数为加密(Encrypt_mode)或者解密(Decrypt_mode)操作,第二个参数为使用

3.4K20
领券