java如何处理加解密、初始时间和结果时间的整体耗时的详细代码(下)

// 导入加密工具包(类似工具箱,里面有加密解密的方法)
import cn.zybank.GmEncry;

// 记录解密开始时间(获取当前系统时间的毫秒数)
long UserQry_00_12_001_decrypt_starttime = System.currentTimeMillis();

// 从全局变量池获取用户编号(作为解密密钥)
String UserQry_00_12_001_UserNo = vars.get("UserNo");

// 获取前一个请求的响应数据(服务器返回的加密内容)
String UserQry_00_12_001_responseEncrypt = prev.getResponseDataAsString();

// 使用GmEncry工具进行第一次解密(核心解密操作)
// 参数1: 解密密钥(用户编号)
// 参数2: 加密的响应数据
String UserQry_00_12_001_responseEncryptData = GmEncry.decrypt(
    UserQry_00_12_001_UserNo, 
    UserQry_00_12_001_responseEncrypt
);

// 进行第二次解密(明文解密,可能是格式转换或最终处理)
String UserQry_00_12_001_plaintext = GmEncry.plainTextDecrypt(
    UserQry_00_12_001_responseEncryptData
);

// 检查解密结果中是否包含成功标识("Rspscd":"000000")
if (UserQry_00_12_001_plaintext.contains(""Rspscd":"000000"")) {
    // 如果包含成功标识,设置失败标志为false(表示成功)
    Failure = false;
} else {
    // 如果不包含成功标识,设置失败标志为true(表示失败)
    Failure = true;
    // 保存完整的解密文本作为失败信息(方便查看具体错误)
    FailureMessage = UserQry_00_12_001_plaintext;
}

// 记录解密结束时间
long UserQry_00_12_001_decrypt_endtime = System.currentTimeMillis();

// 计算解密总耗时(结束时间 - 开始时间)
long UserQry_00_12_001_decrypt_delaytime = 
    UserQry_00_12_001_decrypt_endtime - 
    UserQry_00_12_001_decrypt_starttime;

// 将耗时数值转为字符串(方便写入文件)
String UserQry_00_12_001_decrypt_delay_time = 
    UserQry_00_12_001_decrypt_delaytime.toString();

// 创建文件写入流(追加模式)
// 目标文件路径:E:/***/加解密耗时/UserQry_12.txt
FileWriter fstream = new FileWriter("E:/***/加解密耗时/UserQry_12.txt", true);

// 创建缓冲写入器(提高文件写入效率)
BufferedWriter out = new BufferedWriter(fstream);

// 写入解密耗时信息(格式为:",解密耗时:xxx")
out.write(",解密耗时:" + UserQry_00_12_001_decrypt_delay_time);

// 写入换行符(不同操作系统换行符不同,这样写最保险)
out.write(System.getProperty("line.separator"));

// 关闭缓冲写入器
out.close();

// 关闭文件流
fstream.close();

关键概念详解:

解密过程

双重解密:decrypt() + plainTextDecrypt()

第一次解密:将加密数据转为可读格式(但可能还有特殊编码)

第二次解密:转为完全可读的明文

类似:先拆快递外包装(第一次解密),再拆内部保护层(第二次解密)

结果验证

if (plaintext.contains(""Rspscd":"000000"")) 

Rspscd 可能是 “Response Code”(响应码)的缩写

000000 是成功代码(类似HTTP的200 OK)

如果找到这个代码 → 操作成功

如果没找到 → 操作失败,保存错误信息

耗时记录

记录开始时间和结束时间

计算差值得到实际耗时

写入文件时添加了逗号前缀(,解密耗时:15),可能是为了与之前的加密耗时组成一行

文件操作特点

true 参数表示追加模式(不覆盖已有内容)

System.getProperty("line.separator") 智能获取当前系统的换行符:

Windows: 

Linux/Mac: 

关闭顺序很重要:先关BufferedWriter,再关FileWriter

执行流程示意图:

图表

代码

下载

开始

记录开始时间

获取用户密钥

获取加密响应数据

第一次解密

第二次解密

是否包含成功码?

标记成功

标记失败+保存错误

记录结束时间

计算耗时

写入文件

关闭资源

结束

实际应用场景:

假设这是一个银行系统查询操作:

用户发起查询请求(加密)

服务器返回查询结果(加密)

这段代码负责:

解密服务器返回的数据

检查交易是否成功

记录解密耗时(性能监控)

注意事项:

文件路径E:/***/... 是Windows路径,需确保:

目录存在且有写入权限

磁盘空间充足

解密依赖

需要正确的用户密钥(UserNo

依赖GmEncry类的正确实现

异常处理

当前代码没有错误处理(如解密失败、文件写入失败等)

实际使用时可能需要添加try-catch

日志格式

假设文件已有”加密耗时”记录

此代码追加”解密耗时”到同一行末尾

示例完整行:UserQry_00_12_001加密耗时:15,解密耗时:20

提示:prev.getResponseDataAsString() 是JMeter特有的方法,表示获取前一个HTTP请求的响应内容。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容