[bug日记] MD5加密出现密文长度不正确

赶时间的兄弟们看这里:
数据库字段长度限制导致插入数据库的密文部分丢失(仅记录了我碰到的情况)

解决过程:

登录问题,输入正确的用户名密码,显示“用户名或密码错误”

Debug显示他加密的密码与数据库中已加密的密码不同

他的密码是“123456”

我使用MD5工具类的测试方法看了下,是“e10adc3949ba59abbe56e057f20f883e”随便瞅了眼和数据库里的好像是一样的

尝试更改了密码和数据库中的密文改成纯字符“admin”,因为我在我的环境上成功了,用的这个

结果在他的环境上还是失败了,但是我尝试控制台直接打印用户输入密码产生的密文与数据库密文,意外发现他输入的密码产生的密文比数据库中的密文尾部多出“3c”

怀疑是不输入框或编码的导致的额外输入

使用MD5工具类的测试方法看了下打一个空格输出的是什么发现是“7215ee9c7d9dc229d2921a40e899ec5f”

那就不是空格,编码问题短时间也没有头绪,毕竟字符编码过滤器应该是没问题的

难道是数据库类型转换失去精度?看了下发现大家都是varchar类型,哦,那没事了

想了想,他出的问题的原因是输入产生的密文长度比数据库密文长度多了“3c”两个字符。

诶?长度?看数据类型的时候撇了眼,他长度设置的是30,当时没多想,现在猛然想到直呼“好家伙”

就是因为没做注册,密文是我们自己输入的,密文刚好32个字符,他cv进数据库被挤掉俩没发现

要是先做注册插入数据库的时候铁定报错,巧就巧在先做的登录

posted @ 2021-02-05 14:11  AzureSky_X  阅读(41)  评论(0编辑  收藏  举报