发表于: 2021-03-08 23:46:05

7 1328


今天完成的事情:

继续学习JMeter



明天计划的事情:




遇到的问题:
线程100,循环300,碰到下列错误,这两个都是工具类出现了问题
分析了一下MD5Util工具类,发现password的长度运行几次之后会变成31,但是password.charAt(31),所需要password的长度为32,所以会报错---String index out of range
经过看md5Hex(String str)方法分析,定位到这个代码 BigInteger(1, digest).toString(16);
搜索一下,果然是这个问题

然后修改代码,重新运行,写了一个循环,运行没有报错
/**
* 实现字节数组和16位进制数的互转
* @param str
* @return
*/
private static String md5Hex(String str){
byte[] digest = null;
try {
// 获得MD5摘要算法的 MessageDigest对象
MessageDigest md5 = MessageDigest.getInstance("md5");
digest = md5.digest(str.getBytes("utf-8"));
// 获得密文
byte[] md = digest;
// 把密文转换成十六进制的字符串形式
StringBuffer buf = new StringBuffer();
for (int i = 0; i < md.length; i++) {
int tmp = md[i];
if (tmp < 0) {
tmp += 256;
}
if (tmp < 16) {
buf.append("0");
}
buf.append(Integer.toHexString(tmp));
}
// return buf.toString().substring(8, 24);// 16位加密
return buf.toString();// 32位加密
} catch (Exception e) {
throw new RuntimeException("没有md5这个算法!");
}
}




收获:







返回列表 返回列表
评论

    分享到