铭鸿体育资讯网

之前做的“MD5-Scribe 64轮手算验证系统”,这几天算下来积攒了一些不太

之前做的“MD5-Scribe 64轮手算验证系统”,这几天算下来积攒了一些不太趁手的地方,早上让Codex一并修好了。

比如做完一页工单后的验证页面,加了个十六进制的虚拟键盘。优化了一些工单打印页的样式,这样算起来更加趁手一些。

另外是消息块的事情,原本设计就是只想算单消息块的MD5,也就是手算64轮,但其实初始消息忘记做限制了,所以如果原始消息超过55个字节,就得多算64轮。

但原始消息太短也不好,比如我这次算的是字符串只有4个字节,填零后消息块有太多的零,M_j就非常不紧实。大多数的 T2 = T1 + M_j 计算就不需要计算了,计算量大幅下降。

所以在最开始用户填写原始消息的地方新增了一个指示器,让用户尽可能让原始消息接近55个字节。这样的话M_j就会更加紧实,T2的计算就比较难出现“能逃课”的情形。

但是M_15比较特殊,一定还是全0的。因为512位分块的最后8个字节是用来存放原始消息的位长度,而M_15是长度的高32位。这时候原始消息即便达到极限值55个字节,长度也就只有440位(0x00000000000001B8),那M_15是长度的高32位,肯定还是全0。