实在不知道为什么,测试用例都通过了,但是用网页输入就不行

来源:5-6 实现会员登录功能

weixin_慕勒4393907

2020-09-09 13:46:17

http://img.mukewang.com/climg/5f586aee090e355314460391.jpg

http://img.mukewang.com/climg/5f586b19090ed71c13920367.jpg


图1 是Tomcat调试step into看md5Digest

图2 是用测试用测试md5Digest


问题是明明输入的两个参数一模一样,都是123456作为password, 1234最作为salt

而且从调试来看,加盐以后的字符串也一样,就是调用md5Hex这一步,得出的md5却不一样

请问这是为什么?该如何解决

写回答

6回答

pleine

2021-05-04

我在OA系统哪里也有这个问题,代码完全正确,错误原因是pom里面引入的

commons-codec 版本不一样。和老师视频一样应该可以的。
0

Popeye_Popi

2020-11-12

你好,我跟你的问题一样,请问解决了吗?如何解决的?我新建了项目也不行

0

好帮手慕阿满

2020-09-11

同学你好,打印?是正常的,这边启动项目输出到控制台也是?,如:

http://img.mukewang.com/climg/5f5b352a09f5123901660347.jpg

建议同学新建一个项目,重新测试再试试。

祝:学习愉快~

0

好帮手慕阿满

2020-09-11

同学你好,在问题的截图中,有看到tomcat启动执行程序,@Test测试用例执行程序,获取到target都是ԃԄԅԆԇԈ,如:

http://img.mukewang.com/climg/5f5ae73009ed144f12450243.jpghttp://img.mukewang.com/climg/5f5ae74009b071f911100192.jpg

但是在执行DigestUtils.md5Hex(target)时获取到的结果不同。

这边测试并没有出现同学这种情况,很奇怪。建议同学重新创建一个项目再试试。

祝:学习愉快~

0
heixin_慕勒4393907
h public static String md5Digest(String source, Integer salt) { char[] ca = source.toCharArray(); for (int i = 0; i < ca.length; i++) { System.out.println(ca[i]); ca[i] = (char) ((int)ca[i] + salt); System.out.println("c: "+ca[i]); } String target = new String(ca); String md5 = DigestUtils.md5Hex(target); System.out.println("password: " + source); System.out.println("salt: " + salt); System.out.println("target: "+target); System.out.println("md5: "+md5); return md5; } 我后来在方法内部书写了打印的语句用于排查问题 后来发现即使在调试中显示的是ԃԄԅԆԇԈ,实际打印的target是6个? 问题就是在ca[i] = (char) ((int)ca[i] + salt); 这一句使得ca[i]变为了?
h020-09-11
共1条回复

好帮手慕阿慧

2020-09-09

同学你好,加盐以后输出6个?是没有问题的。

1、同学检查一下项目启动时访问的MD5Utils类和测试的MD5Utils类是否是同一个类。

2、同学检查一下MD5Utils类中导入的DigestUtils包是否正确。如下:

http://img.mukewang.com/climg/5f58b82a09c8b8cb05460342.jpg

祝学习愉快~

0
heixin_慕勒4393907
h 绝对调用的是同一个类,从调试的截图就可以看出,进入的是同一个方法 如果是项目启动访问,加盐得到的是6个?,测试用例得到的是ԃԄԅԆԇԈ 也就是说在项目启动访问状态下,(char)ca[i]+salt的结果是? 请老师帮忙看一下,问题就出在这一步,跟浏览器缓存,idea缓存,方法调用,参数输入,都没有关系
h020-09-10
共1条回复

好帮手慕阿慧

2020-09-09

同学你好,老师这边测试结果都是319f25b32fd538728736a46392e89593。可能是缓存的原因,建议同学换个浏览器,重启Tomcat或者关闭IDEA,重新打开再试试。

祝学习愉快~

0
heixin_慕勒4393907
h 有没有可能之前的众多UTF-8的编码设置导致在这里解析加盐以后的字符也用UTF-8,却没有用ASCII,又该如何解决呢?
h020-09-09
共4条回复

0 学习 · 16556 问题

查看课程